0

ROR の知識がほとんどない単純な Ruby on Rails アプリを作成しています。このアプリは定期的に Twitter と Instagram にクエリを実行し、特定のユーザーのフィードを取得してどこかに保存し、特定のユーザーのツイートや写真のリクエストが届いたときにすぐにアクセスできるようにします。

ツイートやインスタグラムの写真を定期的に取得する部分を行う rake タスクを作成することを考えていました。

webapp がグローバル変数を使用してフィードを取得している場合、rake タスクはこの同じグローバル変数にアクセスして更新できますか?

それとも、rake と webapp が同じデータを更新/アクセスできるように、データベースを使用する必要がありますか?

4

2 に答える 2

2

通常、rake タスクは独自のプロセスで実行されるため、メイン アプリと状態を共有できません。ただし、フィードを取得してタイムスタンプとともに保存するクラスをアプリ内に作成することもできます。そのタイムスタンプが期限切れになるたびに、新しいリクエストが作成されます。ただし、実装は簡単ですが、アプリはリクエストの一部として Twitter と Instagram からデータをフェッチする必要があるため、キャッシュの有効期限が切れた後にリクエストが到着するたびにリクエストが少し遅くなります。

于 2013-07-06T19:39:53.143 に答える
0

Rails アプリをロードするために rake タスクの依存関係を構築すると、Rails アプリと同じすべてのデータにアクセスできます。

desc 'My polling rake task'
task :twitter_pool => :environment do
  m = MyModel.find(123) # access models
  MyModel::CONSTANT
  ... # etc.
end

「=> :environment」が重要な部分です。

于 2013-07-06T19:39:45.630 に答える