4

我一直在Slicehost上使用我的2+歲的切片上的每當寶石。然而,我不能在我的新片上做同樣的事情。每當寶石不會更新crontab任務

主要區別在於我現在在MBP和slice上運行RVM。我也運行Rails 3.我已經得到了Rubygems v 1.5.0和最新版本的RVM,Ruby 1.9.2p136,Capistrano和其他所有包。

我已經嘗試了一百萬件事,閱讀所有的文檔,截至目前我使用的是每當寶石版本0.6.2。我還查看了關於SO和Google的相關主題的所有問題。

這裏是deploy.rb代碼:

namespace :deploy do 
    ... 
    desc "Update the crontab file" 
    task :update_crontab, :roles => :db do 
    run "cd #{release_path} && whenever --update-crontab #{application}" 
    end 
end 

after 'deploy:update_code', 'deploy:update_crontab' 

以下是錯誤消息運行「上限部署」

failed: "rvm_path=$HOME/.rvm/ $HOME/.rvm/bin/rvm-shell '1.9.2' -c 'cd /home/deploy/public_html/lasource/releases/20110209201551 && /home/deploy/.rvm/gems/ruby-1.9.2-p136/bin/whenever --write-crontab'" on lasource.ohlalaweb.com 

任何建議將受到歡迎後,我得到的。

順便說一句,capistrano日誌在哪裏?

由於Simone的建議增加了'bundle exec',我設法完成了cap deploy例程,因爲它一切順利。然而,新的問題是,我的crontab文件仍然是空的任務,並沒有創建我的部分與其4項任務。

回答

10

如果使用Rails 3,請記住用bundle exec執行該命令。

namespace :deploy do 
    desc "Update the crontab file" 
    task :update_crontab, :roles => :app, :except => { :no_release => true } do 
    run "cd #{release_path} && bundle exec whenever --update-crontab #{application}" 
    end 
end 
+0

嗨西蒙娜。我遵循你的建議,並進一步推進。我編輯了我的問題以顯示我現在得到的新錯誤消息。 – allesklar 2011-02-09 22:14:39

0

按照每次的自述:

If a :path is not set it will default to the directory in which whenever was executed.

所以,你不應該有一個文件夾中的CD。另外,你是否嘗試過使用調用shell命令的其他方式?我使用反引號,它在我的環境中工作

namespace :deploy do 
    desc "Update the crontab file" 
    task update_crontab: :environment do 
    `whenever -i cellar` 
    end 
end