编辑: 这里的问题是我在本地机器上使用了 RVM,在服务器上使用了 rbenv。强烈不建议这样做,如果您正在管理多个 ruby 安装(或升级您的 ruby 版本但不想更改系统),请在所有环境中使用 RVM 或 rbenv! /编辑
所以我将从一点历史开始:我正在将我们的 rails2 网站升级到 rails3。除了 Capistrano 的部署脚本之外,大多数事情现在都可以正常工作。我目前的设置是:
- 本地安装的 RVM (1.14.1)
- ruby-1.9.3-p194(设置为项目文件夹)
- Capistrano v2.12.0(从 2.6.0 升级,但在 2.6.0 上也不起作用)作为 RVM gem 安装
- rvm-capistrano (1.2.2),添加到 Gemfile 中(在网上和 SO 上做了一些阅读之后)
- rbenv(全局使用 ruby 1.9.3p194)安装在服务器上
(到现在为止,如果您发现任何不合理的地方,请告诉我)
部署脚本中没有任何变化,但是当我尝试部署到我的测试服务器(我们称之为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 有关,我只是从网上看的猜测。
谢谢