2012-02-18 3 views
0

6時間などの一定の間隔でRSSをポーリングする方法に関するアドバイスを探しています。6時間ごとにRSSをポーリングするレール

次のコードが機能し、フィードを読み込んで解析し、データベースに追加します。新しいフィードだけが追加されます。クラスメソッドは次のとおりです。

def self.update_from_feed(feed_url) 
    feed = Feedzirra::Feed.fetch_and_parse("http://feeds.feedburner.com/PaulDixExplainsNothing") #Example feed 
    feed.entries.each do |entry| 
    unless exists? :guid => entry.id 
     create!(
     :name   => entry.title, 
     :url   => entry.url, 
     :published_at => entry.published, 
     :guid   => entry.id 
    ) 
    end 
    end 
end 

6時間ごとにこのクラスメソッドを実行するにはどうすればよいですか?私はRuby(とRails)の新機能ですから、どのような助けも参考になるでしょう。可能であれば、外部のcronジョブを実行しないようにしたい。コード内で6時間ごとに実行したいと思うのですが。ありがとう

+0

[レール用のcronジョブ:ベストプラクティス?](http://stackoverflow.com/questions/285717/a-cron-job-for-rails-best-practices) –

答えて

4

いいえ、これにcronを使用しないのは意味がありません。これはcronのためのものであり、プログラムの名前です。

クールな構文が気に入らなければ、いつも呼ばれている宝石があります。https://github.com/javan/wheneverは、クーロンジョブを生成するための素晴らしいRuby構文とそれを可能にするコマンドを提供します。

しかし、神の愛のために、いくつかのキラー機能を追加しない限り、これを行う新しい方法を発明しようとしないでください。 cronを使って、動いてください。

+0

こんにちは、ありがとう応答。私はこれを先に見つけましたが、私はむしろ混乱しました。私はちょうどそれでモデルを実行するか? 「6.hours every every do runner」MyModel.some_process「 end'私はランナーパーツを理解できません.MyModelはモデルの名前ですが、.some_processは何ですか? .update_from_feedだろうか? – user1104783

+0

それは可能です。私はレーキタスクを使うことに固執しがちですが、それは理解しやすいからです。環境をロードしてからクラスメソッドを実行する単純なレーキタスクを作成します。こうすることで、FeedzirraにヒットさせるURLを動的にロードすることもできます。バックグラウンドでループして、Webサイトをユーザーに提供するリソースを使い果たすことはありません。 –

+0

提案をありがとうと私はこれを試してみます。 – user1104783

関連する問題