我一直在Slicehost的2岁以上的切片上使用随时随地的宝石。然而,我不能在我的新片上做同样的事情。
主要区别在于我现在在我的MBP和切片上运行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'
以下是运行'cap deploy'
后收到的错误消息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',我设法完成了帽子部署程序,因为一切顺利。然而,新问题是我的crontab文件仍然没有任务,并且没有使用其4个任务创建我的部分。
答案 0 :(得分: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
答案 1 :(得分: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