[英]Capistrano deploy fails with rake run (rails3 + rvm)
编辑:这里的问题是我在本地计算机上使用RVM,在服务器上使用rbenv。 强烈不建议这样做,如果要管理多个ruby安装(或升级ruby版本,但不想更改系统),则在所有环境中都使用RVM或rbenv! /编辑
因此,我将从一些历史开始:我正在将rails2网站升级到rails3。 到目前为止,除Capistrano的部署脚本外,大多数事情都可以正常运行。 我当前的设置是:
(到目前为止,如果您发现没有任何意义的内容,请告诉我)
部署脚本中没有任何变化,但是当我尝试部署到测试服务器时(我们称其为beta ),出现此错误:
* executing `deploy:restart'
* executing "cd /home/foo/bar/current && rake RAILS_ENV=beta queue:restart_workers"
servers: ["208.0..."]
[208.0...] executing command
*** [err :: 208.0...] rake aborted!
*** [err :: 208.0...] no such file to load -- bundler/setup
*** [err :: 208.0...] /home/foo/bar/releases/20120630161947/Rakefile:5
*** [err :: 208.0...] (See full trace by running task with --trace)
** [out :: 208.0...] (in /home/foo/bar/releases/20120630161947)
command finished in 1183ms
failed: "sh -c 'cd /home/foo/bar/current && rake RAILS_ENV=beta queue:restart_workers'" on 208.0...
deploy.rb的相关部分如下所示:
task :restart do
run "cd /home/foo/bar/current && rake RAILS_ENV=#{CAP_ENV} queue:restart_workers"
run "cd /home/foo/bar/current && rake RAILS_ENV=#{CAP_ENV} db:migrate"
run "touch #{deploy_to}/current/tmp/restart.txt"
end
不用说, rake RAILS_ENV=beta queue:restart_workers'
在服务器上手动运行时效果很好。 同样,应用程序也得到了部署(代码是从git复制的,这只是部署失败的最后一部分)。
最后,该错误没有改变,因为在我安装rvm-capistrano并将其添加到Gemfile之前,所以我什至不确定它是否与rvm有关,我只是从在线查找而来。
谢谢
为了正常工作,rbenv必须使用它提供的垫片覆盖所有与ruby和gem相关的可执行文件。
通常,这是通过启动脚本完成的(这就是为什么当您登录服务器时可以运行),而Capistrano在没有外壳程序的情况下登录,因此不会运行这些脚本。
您必须将以下内容添加到您的deploy.rb中:
set :default_environment, {
'PATH' => "$HOME/.rbenv/shims:$HOME/.rbenv/bin:$PATH"
}
并且不要在您的服务器上使用任何与rvm相关的内容,rbenv和rvm确实彼此不喜欢
PS:关于此主题的更多说明: http : //henriksjokvist.net/archive/2012/2/deploying-with-rbenv-and-capistrano/
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.