2012-03-13 43 views
1

我,我想,每天一次執行一個rake任務:在生產安裝RVM 如何設置每當生產(RVM)寶石

schedule.rb我有

set :output, "/home/username/data/public_html/log/cron_log.log" 
every 24.hours do 
    rake "fetch:smth" 
end 

的crontab -l顯示我:

MAILTO="[email protected]" 
PATH="/usr/local/rvm/rubies/ruby-1.9.3-p125/bin/ruby " 
@daily cd /home/username/data/www/nameofsite.com && RAILS_ENV=production bundle exec rake fetch:smth 

真正的,我是一個有點困惑,怎麼以前我沒有用cron的經驗,所以PLZ幫幫我。

編輯#1

我已經運行RVM ENV - 路徑[email protected] ,它給了我:

PATH="/usr/local/rvm/gems/ruby-1.9.3-p125/bin:/usr/local/rvm/gems/[email protected]/bin:/usr/local/rvm/rubies/ruby-1.9.3-p125/bin:/usr/local/rvm/bin:$PATH" 

,然後我

MAILTO="[email protected]" 
PATH="/usr/local/rvm/gems/ruby-1.9.3-p125/bin:/usr/local/rvm/gems/[email protected]/bin:/usr/local/rvm/rubies/ruby-1.9.3-p125/bin:/usr/local/rvm/bin:$PATH" 
@daily RAILS_ENV=production rake rate:fetch 

當我運行execute,從ISPmanager,它給了我:退出並返回c ode = 1 下面的link表示如果退出錯誤是1,那麼已經有一個/var/run/cron.pid文件。這是真的,但我沒有root權限

回答

1

如果您從cron調用任務,則不需要schedule.rb。這由crontab中的@daily條目處理。只需將日誌文件名稱設置爲環境變量,並讓rake任務參考該文件即可。您的$PATH中可能還需要更多,而不僅僅是ruby二進制文件的路徑,否則bundle不會被發現。當你給出一個ruby的路徑時,你實際上並沒有選擇它來讓RVM知道你的意思,所以它無法找到合適的gemset。 RVM爲這類任務提供了正確的事情包裝 - 將bundle exec替換爲/usr/local/rvm/wrappers/ruby-1.9.3-p125 -S bundle exec,它應該可以工作。

希望能給你一些想法。還有更多here

更新#1

隨着編輯#1,您已經解決了一個問題,並創建了另一個。您仍然需要cd到app目錄,否則rake將找不到Rakefile。

+0

@SaidKaldybaev這是誤導!其他人(如smyself)可能會發現相同的問題,並認爲這個答案解決了您的問題! – 2015-11-12 21:54:41