2014-02-06 34 views
0

對不起,似乎是一個基本的問題,但我很難過。如何將單獨的Ruby程序轉換爲rake任務?

我有一個Rails應用程序,它部分依賴於我定期下載(通常每天)下載並集成到應用程序數據庫中的第三方數據。我用於獲取第三方數據的Ruby代碼位於單獨的Ruby文件中,即未在我的任何控制器中集成爲代碼。所以,我需要時通過rails runner program.rb運行這些程序(可能不相關,但他們都使用機械寶石收集第三方數據)。

我想嘗試使用Heroku的調度程序來使我的數據收集更加自動化,並且建議這樣做是爲了設置rake任務。是否有相當於rails runner program.rb的佣金任務?

感謝

+0

相關:http://stackoverflow.com/questions/591503/i-have-a-rails-task-should-i-use-script-runner-or-rake – MurifoX

回答

0

至於轉換軌命令到rake任務這是很容易,你只的命名空間是這樣的:

# /lib/tasks/my_task.rake 
namespace :mytask do 

    desc 'the description of your task' 
    task :my_task => :environment do 
    puts 'my task was executed' 
    end 
end 

然後你會用「耙mytask叫它:my_task '之後,你應該可以用Heroku的調度程序來做。另外我想推薦'每當'寶石按計劃安排事項,因爲我對Heroku沒有經驗,但已經發現寶石太棒了。

+0

我的困惑是如何執行必要的代碼從Ruby腳本沒有把它全部放在rake文件中。有沒有辦法做到這一點?你在哪裏「放置」我的任務被執行'「我想讓我的Ruby腳本執行。 。 。所以,如果它在「program.rb」中,我如何引用它/讓它從rake文件內執行? – dugq

+0

啊,好的。您可能正在考慮「系統」呼叫。你會這樣做系統('program.rb')。你也有(更好的)選項來加載或需要它:load('myfile.rb')或require('./ my_file.rb')但是我建議把它放在你的耙子任務中,這樣可以檢查它與您網站的其他部分一起進入您的版本控制。如果你想在rake任務中調用一些類,可能在/ lib中包含一些額外的庫。 – Lethjakman