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