7

将我的 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

请帮我弄清楚这一点。

4

2 回答 2

6

谢谢本杰明,但错误真的很愚蠢))。Localy 我使用的是 rvm 安装的 ruby​​ 2.0.0-p195。在我的服务器上,我使用 rbenv 安装的 ruby​​ 2.0.0-p0,因为 rbenv 没有 ruby​​ 包 2.0.0-p195。

因此,当我通过 rails-composer 创建新的 rails4 应用程序时,我没有注意到它是使用 .ruby-version文件创建的,其中包含 ruby​​ version ruby​​ 2.0.0-p195 的一行,所以我只是* git rm .ruby-version*,一切正常。

于 2013-08-05T07:15:43.140 回答
4

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

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

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

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

我的export指示是:

echo 'export RBENV_ROOT=/opt/rbenv'
echo 'export PATH=/opt/rbenv/bin:$PATH'
echo 'eval "$(rbenv init -)"'

1-

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

2-

编辑文件 /root/.bashrc(或 /home/your_user/.bashrc,如果您确实使用“root”以外的其他用户访问您的服务器)并在该行source /etc/profile.d/rbenv之前添加该行[ -z "$PS1" ] && return

3-

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

4-

通过打开另一个 ssh 控制台会话并尝试ruby -v. 然后 capistrano 应该可以正常工作

其他可能性

rbenv 在你手动安装 gems 后需要重新散列,所以在你的服务器上运行rbenv rehash只是为了确保

于 2013-08-05T00:59:38.797 回答