繁体   English   中英

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

[英]Can't deploy rails4 project with capistrano. rbenv: version `2.0.0' is not installed

将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

请帮我解决这个问题。

谢谢本杰明,但错误真的很愚蠢))。 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 * ,一切正常。

这肯定是一个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”之外的其他用户访问您的服务器)并在行[ -z "$PS1" ] && return之前添加行source /etc/profile.d/rbenv [ -z "$PS1" ] && return

3-

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

4-

通过打开另一个ssh控制台会话并尝试ruby -v验证它是否正常工作。 然后capistrano应该正常工作

其他可能性

手动安装gem后rbenv需要rehash,所以在你的服务器rbenv rehash上运行只是为了确定

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM