2011-10-19 25 views
0

我有一個紅寶石任務,每天從第三方下載一些數據。 基於這個下載的數據,我想更新crontab。Ruby on Rails 3.1 - 如何每天動態地填充crontab/cronjob

例如,每天早上9點,我想確定當天的計劃任務列表。

今天上午9點 - 我知道「任務A」需要在下午1點和下午2點運行。所以,我需要在下午1點和下午2點插入crontab。

明天上午9點 - 我會知道「任務A」需要在下午4點運行。所以,我需要在下午4點插入crontab。

我該如何做到這一點?任何推薦的寶石?

回答

2

我想你需要看看每當gem,並在initializers文件(它是每當配置文件)寫一個schedule.rb。之後用every命令更新crontab。

https://github.com/javan/whenever

http://railscasts.com/episodes/164-cron-in-ruby

+0

我會還建議'whenever'寶石,但我想,除此之外,建議@ user1000589重構他/她產生任務的方式(或。進一步查看)。根據提供的信息,確定哪些任務運行的算法仍不清楚。 –

+0

基本上,我每天下載一個電視節目表。每當我得到一個新的時間表,我想開始記錄我下載的放映時間。 – ddb

+0

所以,我的cronjob需要有一個條目來顯示開始時間。 任務是啓動記錄器(主要是一個rake任務)。 – ddb

0
Using Whenever gem 
# In rails 4 
require File.expand_path('../..//config/environment.rb', __FILE__) 

# This is your table by which you will get your new value 
bid_update = DynamicOfferTime.first 

# Now Task As 
every (bid_update.hour_value).hours do 
    puts "This will repeat in every #{bid_update.hour_value} hour" 
end