4

我一直在 Slicehost 我 2 岁以上的切片上使用when gem。但是,我不能在我的新切片上做同样的事情。

主要区别在于我现在在 MBP 和切片上运行 RVM。我也在运行 Rails 3。我有 Rubygems v 1.5.0 和最新版本的 RVM、Ruby 1.9.2p136、Capistrano 以及几乎所有其他软件包。

我已经尝试了一百万件事,阅读了所有文档,到目前为止,我正在使用无论何时 gem 版本 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”后,我设法完成了 cap 部署例程,因为一切都很顺利。然而,新问题是我的 crontab 文件仍然没有任务,并且没有创建包含 4 个任务的部分。

4

2 回答 2

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
于 2011-02-09T21:46:28.363 回答
0

根据everyone的自述文件:

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
于 2015-02-23T20:29:56.317 回答