[英]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.