私のアプリケーションは、Mechanize を使用してさまざまなサイトから情報をスクレイピングします。当然のことながら、各サイトにはカスタム Mechanize コードが必要です。各サイトは、スクレイピングする URL と、そのサイトの Mechanize コードを含む .rb ファイルの文字列名を含めて、私のデータベースに保存されます。この場合、スクリプトが assets フォルダーで利用可能であると仮定しましょう。
を呼び出しhttp://example.com/site/:id
て、show アクションで実行する Mechanize スクリプトを動的に選択します (たとえば、@site.name + ".rb"
)。スクリプトはデータを共通のモデルに変換するため、すべてのサイトで同じショー テンプレートを使用できます。
アクション内で .rb スクリプトを動的にロードして結果を取得する方法が見つかりません。テンプレートに渡す前に解析できる JSON 文字列をスクリプトで返す方が簡単かもしれませんが、その解決策もわかりません。理想的には、スクリプトはアクションのスコープで実行されます。醜い解決策は膨大な if-else チェーン (実行するコード ブロックを決定するためにサイト名をテストする) ですが、もっと良い方法があるはずです。
データベースオブジェクトのプロパティに依存するさまざまなコードを実行するための一般的な解決策と同様に、提案は大歓迎です。