2012-08-02 55 views
0

我部署(與capistrano)aws微型服務器上的rails項目上的紅寶石。 我在紅寶石1.9.2-290和鐵軌3.2.6,我也使用捆綁。 我公司開發的任務耙在我的選擇/軌項目/ lib目錄/任務/ tasks.rake如何使用crontab在rails上運行ruby的任務耙子? (其中手動工作,沒有crontab)

namespace :myclass do 
    task "my-task" => :environment do 
     # do the stuff which work nicely if i enter my command line manually 
    end 
end 

我這是怎麼稱呼它在我的crontab:

*/3 * * * * cd /opt/rails-project/current && /opt/rails-project/shared/bundle/ruby/1.9.1/gems/rake-0.9.2.2/bin/rake myclass:my-task RAILS_ENV=production >> ~/logs-my-task.txt 

文件〜/日誌-my-task.txt每3分鐘創建並更新一次。這個文件只包含來自capistrano的版本信息,但沒有包含我的任務耙。

正如我在我的任務耙評論說,如果我直接在服務器通過SSH啓動此命令時,我的任務耙它的工作...

我在網上搜索所有的晝/夜長,無法弄清楚。

我試圖從rails中刪除http_basic auth,但同樣的問題。

希望你有一個主意, 感謝您的幫助!

+0

看看這個鏈接:http://stackoverflow.com/questions/9995256/cron-job-in- ruby-on-rails-not-work/9995395#9995395 – Kashiftufail 2012-08-02 06:22:04

回答

0

儘量把這個部分

cd /opt/rails-project/current && /opt/rails-project/shared/bundle/ruby/1.9.1/gems/rake-0.9.2.2/bin/rake myclass:my-task RAILS_ENV=production >> ~/logs-my-task.txt 

一些文件,somescript.sh內,給予執行權限:

chmod +x somescript.sh 

,並嘗試手動運行它:如果它工作

/path/to/somescript.sh 

,試着把它放到crontab中:

*/3 * * * * /path/to/somescript.sh 

它通常有助於將複雜的東西放入腳本中,以便從crontab運行。

下一步,確保你的PATH環境變量和你的shell和cron一樣。你可以在crontab裏面或腳本里面設置它。

+0

謝謝!我不需要使用腳本腳本,但它可以幫助我在手動啓動腳本時弄清楚它。 – mfalla 2012-08-02 17:46:13