无法使用capistrano部署rails4项目。 rbenv:未安装版本“2.0.0”

时间:2013-08-04 20:37:06

标签: ruby-on-rails ruby deployment capistrano

将rails4应用程序部署到VPS时出错。 我得到的错误是

rbenv: version `2.0.0' is not installed

但是使用“ruby -v”我得到了

ruby 2.0.0p0 (2013-02-24 revision 39474) [i686-linux]

在我的gemfile中我有

source 'https://rubygems.org'

ruby '2.0.0'
gem 'rails', '4.0.0'

捆绑安装配方

后出现此错误
2013-08-04 23:23:56 executing `bundle:install'
* executing "cd /home/yasinishyn/apps/kaiser/releases/20130804202355 && bundle install --gemfile /home/yasinishyn/apps/kaiser/releases/20130804202355/Gemfile --path /home/yasinishyn/apps/kaiser/shared/bundle --deployment --quiet --without development test"
servers: ["xxx.xxx.xxx.xxx"]
[198.211.125.183] executing command
** [out :: xxx.xxx.xxx.xxx] rbenv: version `2.0.0' is not installed
** [out :: xxx.xxx.xxx.xxx] 
command finished in 355ms
*** [deploy:update_code] rolling back
* executing "rm -rf /home/yasinishyn/apps/kaiser/releases/20130804202355; true"
servers: ["xxx.xxx.xxx.xxx"]
[xxx.xxx.xxx.xxx] executing command
command finished in 342ms

请帮我弄明白。

2 个答案:

答案 0 :(得分:6)

谢谢Benjamin,但错误真的很愚蠢))。 Localy我使用由rvm安装的ruby 2.0.0-p195。在我的服务器上我用rickv安装的ruby 2.0.0-p0,因为rbenv没有ruby软件包2.0.0-p195。

因此,当我使用rails-composer创建新的rails4应用程序时,我没有注意到它是使用 .ruby-version 文件创建的,其内部是与ruby版 ruby​​ 2.0.0-p195 一致,所以我只需 * git rm .ruby-version * ,一切正常。< / p>

答案 1 :(得分:4)

这肯定是一个PATH问题,capistrano将在不打开控制台会话的情况下通过ssh发送命令,如果打开ssh控制台会话,则不会以相同的方式加载配置文件。这可以解释为什么通过ssh控制台可以获得正确的rbenv环境,但不能通过capistrano。

以下适用于debian / ubuntu,需要针对其他发行版进行调整

我想你在一个配置文件中添加了一些export指令。在〜/ .profile或〜/ .bashrc中也许。

我使用的export指令如下,但它们在您的配置中可能有所不同,因此如果在打开ssh控制台时rbenv正常工作,那么您可以保留{{1命令。我要详细说明的诀窍就是将它们放在正确的位置。

我的export说明是:

export

1-

从以前包含它们的任何文件中删除它们并将它们放在文件/etc/profile.d/rbenv

2-

编辑文件/root/.bashrc中(或/home/your_user/.bashrc如果你与其他用户不是“根”访问您的服务器)和echo 'export RBENV_ROOT=/opt/rbenv' echo 'export PATH=/opt/rbenv/bin:$PATH' echo 'eval "$(rbenv init -)"' 只是行前添加一行{{1 }}

3 -

编辑文件/home/deployer/.bashrc(假设您使用“deployer”用户为capistrano,否则调整路径)并添加该行 source /etc/profile.d/rbenv 就在[ -z "$PS1" ] && return

行之前

4-

通过打开另一个ssh控制台会话并尝试source /etc/profile.d/rbenv来验证它是否正常工作。然后capistrano应该正常工作

其他可能性

手动安装宝石后需要重新运行rbenv,所以在服务器[ -z "$PS1" ] && return上运行只是为了确保