5

根据 RailsCasts 的指南,我正在使用 capistrano 部署到 VPS。 http://railscasts.com/episodes/335-deploying-to-a-vps?view=asciicast

deploy:cold命令失败,与 Ruby 冲突。我实际上看不出问题出在哪里,因为当我向同一个用户发送外壳时,Ruby 版本看起来是正确的。

$ cap shell
cap> which ruby
[establishing connection(s) to 192.xxx.xxx.xxx]
 ** [out :: 192.xxx.xxx.xxx] /home/deployer/.rbenv/shims/ruby
cap> ruby -v
** [out :: 192.xxx.xxx.xxx ruby 1.9.3p327 (2012-11-10 revision 37606) [x86_64-linux]

这是错误:

command finished in 655ms
* 2013-07-01 16:40:39 executing `bundle:install'
* executing "cd /home/deployer/rails/assay/releases/20130701144038 && bundle install --  gemfile /home/deployer/rails/assay/releases/20130701144038/Gemfile --path   /home/deployer/rails/assay/shared/bundle --deployment --quiet --without development test"
servers: ["192.xxx.xxx.xxx"]
[192.xxx.xxx.xxx] executing command
** [out :: 192.xxx.xxx.xxx] rbenv: version `1.9.3' is not installed
command finished in 662ms
*** [deploy:update_code] rolling back

我的问题是:我该如何调试?当我阅读deploy.rb文件时,我什至看不到它在哪里引用了 Ruby 版本。非常令人沮丧,我正准备 ftp 上的 repo,这显然不理想。

4

3 回答 3

8

好吧,我终于找到了问题的根源——Capistrano 使用的 ruby​​ 版本与服务器上的实际版本不匹配。

要调试 Capistrano,请像这样运行它:

cap deploy:cold  -d

那就是您可以在删除命令之前单步执行命令并访问远程服务器上的临时目录。

于 2013-07-01T20:50:35.273 回答
3

我刚刚遇到了类似的问题,原因是.ruby-version文件指向1.9.3(文件是由 rails-composer 生成的),而1.9.3-p392远程机器上是通过 rbenv 安装的。

于 2013-07-03T11:13:11.817 回答
0

capistrano 的调试信息可以通过tail -f log/capistrano.log.

于 2019-04-08T03:32:26.727 回答