Ruby on rails 3 通过Capistrano部署Rails应用程序时出现RVM错误

Ruby on rails 3 通过Capistrano部署Rails应用程序时出现RVM错误,ruby-on-rails-3,capistrano,rvm,Ruby On Rails 3,Capistrano,Rvm,历史: 了解如何将Rails3应用程序部署到 中间示例DV服务器 在服务器、ruby和essential gems上安装了RVM 如果我用FTP上传的话,这个网站可以正常工作 一切都好 然后,我决定按照“使用Rails进行敏捷Web开发”为GIT/cap部署进行适当的部署和设置 尝试使用cap部署,但在gems方面出现错误,无法用于生产站点 仔细阅读后,我意识到我可能应该在系统范围内安装RVM 移除所有宝石和RVM 已安装RVM系统范围 cap部署“bash:/home/foo/.rvm/

历史:

  • 了解如何将Rails3应用程序部署到 中间示例DV服务器
  • 在服务器、ruby和essential gems上安装了RVM
  • 如果我用FTP上传的话,这个网站可以正常工作
  • 一切都好
然后,我决定按照“使用Rails进行敏捷Web开发”为GIT/cap部署进行适当的部署和设置

  • 尝试使用cap部署,但在gems方面出现错误,无法用于生产站点
  • 仔细阅读后,我意识到我可能应该在系统范围内安装RVM
  • 移除所有宝石和RVM
  • 已安装RVM系统范围
  • cap部署“bash:/home/foo/.rvm/bin/rvm shell:没有这样的文件或目录”时出错,这很有意义-主目录中没有.rvm/
  • 考虑到最初安装RVM以用作用户时会出现一些问题,我删除了该用户,删除了主目录,并重新创建了具有权限的用户
  • cap deploy“bash:/home/foo/.rvm/bin/rvm shell:没有这样的文件或目录”上出现相同错误
目前的情况是:

对于foo,.bashrc包含最后一行:

[[ -s '/usr/local/lib/rvm' ]] && source '/usr/local/lib/rvm'
当我发布:

type rvm | head -1
响应为“rvm是一种功能”

/etc/rvmrc包含

if [[ ! -s "$HOME/.rvm/scripts/rvm" ]]; then
  umask g+w
  export rvm_selfcontained=0
  export rvm_prefix="/usr/local/"
fi

这里没有想法了,希望得到一些建议。

下次尝试将此添加到您的capistrano中:

set :rvm_type, :system

看起来rvm外壳不在您的rvm安装目录中。运行此命令

rvm get head

然后你会在你的rvm bin目录中找到它。

我只是想添加到@imonyse的评论中

rvm的头部分支对于某些部署来说可能有点太不稳定。我知道我们不推荐的SLES盒子有被它卡住的倾向。最好获得最新的稳定版本

rvm get stable

另外,不要在运行生产代码的非常旧的服务器上执行此操作,因为这可能会产生不期望的后果

决心。我刚刚摆脱了RVM。现在效果很好。我会为我的开发机器保存RVM…非常有用。或者,如果要部署到具有单用户rvm安装的服务器上,则可以将:rvm_type设置为:user。@mpapis您如何知道是否有单用户rvm安装或系统安装?我不记得我做了哪一个。您可以在登录到服务器并运行
echo$rvm_path
@mpapis后检查此命令的具体作用是什么?它说“use_sudo设置为'false',但需要sudo来安装rvm_type:system”,但我不确定rvm_type:systemNow的后果如果我已经在/usr/local多用户安装中安装了rvm,为什么每次部署都需要将其添加到deploy.rb?