2013-08-31 48 views
0

最近我继承了一个Rails应用程序,已经部署到生产中很多次。我以前部署到临时环境。现在,它无法部署到任一个。然而,另一个部署到具有相同帐户的相同服务器的Rails应用程序成功部署了使用rvm和capistrano。Capistrano部署失败rvm-shell说rvm没有被发现

我收到以下错误:

  * executing "if [ -d /path/to/app/shared/cached-copy ]; then svn switch -q --username svnusername --password <filtered> --no-auth-cache  -r111111 https://svn.server.local/svn/projects/app/trunk /path/to/app/shared/cached-copy; else svn checkout -q --username svnusername --password <filtered> --no-auth-cache  -r111111 https://svn.server.local/svn/projects/app/trunk /path/to/app/shared/cached-copy; fi" 
    servers: ["myserver-prod01.private.local"] 
    [myserver-prod01.private.local] executing command 
 ** [myserver-prod01.private.local:: out] 
 ** [myserver-prod01.private.local:: out] $rvm_path (/home/appuser/.rvm/) does not exist. 
 ** [myserver-prod01.private.local:: out] /usr/local/rvm/scripts/rvm: line 174: rvm_is_a_shell_function: command not found 
 ** [myserver-prod01.private.local:: out] /usr/local/rvm/scripts/rvm: line 185: __rvm_teardown: command not found 
 ** [myserver-prod01.private.local:: out] /usr/local/rvm/bin/rvm-shell: line 83: rvm: command not found 
 ** [myserver-prod01.private.local:: out] Error: RVM was unable to use '[email protected]' 
    command finished in 554ms 
*** [deploy:update_code] rolling back 
  * executing "rm -rf /path/to/app/releases/20130425150643; true" 
    servers: ["myserver-prod01.private.local"] 
    [myserver-prod01.private.local] executing command 
 ** [out :: myserver-prod01.private.local]  
 ** [out :: myserver-prod01.private.local] $rvm_path (/home/appuser/.rvm/) does not exist. 
 ** [out :: myserver-prod01.private.local] /usr/local/rvm/scripts/rvm: line 174:  rvm_is_a_shell_function: command not found 
 ** [out :: myserver-prod01.private.local] /usr/local/rvm/scripts/rvm: line 185: __rvm_teardown: command not found 
 ** [out :: myserver-prod01.private.local] /usr/local/rvm/bin/rvm-shell: line 83: rvm: command not found 
 ** [out :: myserver-prod01.private.local] Error: RVM was unable to use '[email protected]' 
    command finished in 209ms 
 ** [deploy:update_code] exception while rolling back: Capistrano::CommandError, failed: "env PATH=/opt/toolkit/extra-dev-current/root/usr/bin:$PATH:/usr/database/bin LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8 RAILS_ENV=production rvm_path=$HOME/.rvm/ /usr/local/rvm/bin/rvm-shell '[email protected]' -c 'rm -rf /path/to/app/releases/20130425150643; true'" on myserver-prod01.private.local 
failed: "env PATH=/opt/toolkit/extra-dev-current/root/usr/bin:$PATH:/usr/database/bin LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8 RAILS_ENV=production rvm_path=$HOME/.rvm/ /usr/local/rvm/bin/rvm-shell '[email protected]' -c 'if [ -d /path/to/app/shared/cached-copy ]; then svn switch -q --username svnusername --password <filtered> --no-auth-cache  -r111111 https://svn.server.local/svn/projects/app/trunk /path/to/app/shared/cached-copy; else svn checkout -q --username svnusername --password <filtered> --no-auth-cache  -r111111 https://svn.server.local/svn/projects/app/trunk /path/to/app/shared/cached-copy; fi'" on myserver-prod01.private.local 

我已经检查了服务器。 RVM已安装并正在运行。

+0

[部署Rails应用程序通过Capistrano发生RVM错误]的可能重复(http://stackoverflow.com/questions/5253153/rvm-error-with-deploying-rails-app-via-capistrano) – mpapis

回答

1

这是一个rvm/rvm-capistrano版本不匹配。检查服务器上安装的rvm的版本,并与捆绑安装的rvm-capistrano版本进行比较。如果您的服务器具有rvm 1.18.x,则将Gemfile中的rvm版本锁定为1.2.x. rvm-capistrano 1.3.x需要rvm 1.19.x.

我在回答我自己的问题,因为我必须弄清楚这个难题。回想起来很明显,但是当你第一次看到这个错误的时候并不是这样。这是没有在Gemfile中指定产品版本的情况。通常,我们广泛的测试套件会捕获这样的问题,但是我们的测试套件并未覆盖部署,所以我们错过了这个测试套件,直到为时已晚。