【问题标题】:Can't deploy Rails app with Capistrano and RVM无法使用 Capistrano 和 RVM 部署 Rails 应用程序
【发布时间】:2011-07-14 18:17:43
【问题描述】:

我有一个使用 Capistrano 部署的 Rails 应用程序。我在服务器上安装了 RVM,因为我想使用更新版本的 Ruby,并将其添加到我的 deploy.rb 文件中(根据我找到的各种说明):

$:.unshift(File.expand_path('./lib', ENV['rvm_path']))
require 'rvm/capistrano'
set :rvm_ruby_string, '1.9.2'
set :rvm_type, :user

当我运行时,cap deploy,会发生这种情况:

    [staging.example.com] executing command
 ** [out :: staging.example.com] /usr/local/lib/site_ruby/1.8/rubygems.rb:779:in `report_activate_error': Could not find RubyGem bundler (>= 0) (
 ** [out :: staging.example.com] Gem::LoadError)
 ** [out :: staging.example.com] from /usr/local/lib/site_ruby/1.8/rubygems.rb:214:in `activate'
 ** [out :: staging.example.com] from /usr/local/lib/site_ruby/1.8/rubygems.rb:1082:in `gem'
 ** [out :: staging.example.com] from /usr/bin/bundle:18
    command finished in 801ms
*** [deploy:update_code] rolling back
  * executing "rm -rf /home/example/staging.example.com/releases/20110714180125; true"
    servers: ["staging.example.com"]
    [staging.example.com] executing command
    command finished in 895ms
    failed: "rvm_path=$HOME/.rvm/ /usr/local/bin/rvm-shell '1.9.2' -c 'bundle install --gemfile /home/example/staging.example.com/releases/20110714180125/Gemfile --path /home/example/staging.example.com/shared/bundle --deployment --quiet --without development production'" on staging.example.com

为什么 capistrano 使用 Ruby 1.8?我的路显然也是一团糟。

这是 staging.example.com 上 rvm info 的输出:

ruby-1.9.2-p180:

system:
  uname:       "Linux staging 2.6.39.1-linode34 #1 SMP Tue Jun 21 10:29:24 EDT 2011 i686 GNU/Linux"
  bash:        "/bin/bash => GNU bash, version 4.1.5(1)-release (i486-pc-linux-gnu)"
  zsh:         " => not installed"

rvm:
  version:      "rvm 1.6.22 by Wayne E. Seguin (wayneeseguin@gmail.com) [https://rvm.beginrescueend.com/]"

ruby:
  interpreter:  "ruby"
  version:      "1.9.2p180"
  date:         "2011-02-18"
  platform:     "i686-linux"
  patchlevel:   "2011-02-18 revision 30909"
  full_version: "ruby 1.9.2p180 (2011-02-18 revision 30909) [i686-linux]"

homes:
  gem:          "/home/example/.rvm/gems/ruby-1.9.2-p180"
  ruby:         "/home/example/.rvm/rubies/ruby-1.9.2-p180"

binaries:
  ruby:         "/home/example/.rvm/bin/ruby"
  irb:          "/home/example/.rvm/bin/irb"
  gem:          "/home/example/.rvm/bin/gem"
  rake:         "/home/example/.rvm/bin/rake"

environment:
  PATH:         "/home/example/.rvm/bin:/home/example/.rvm/gems/ruby-1.9.2-p180/bin:/home/example/.rvm/gems/ruby-1.9.2-p180@global/bin:/home/example/.rvm/rubies/ruby-1.9.2-p180/bin:/home/example/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/ruby/bin"
  GEM_HOME:     "/home/example/.rvm/gems/ruby-1.9.2-p180"
  GEM_PATH:     "/home/example/.rvm/gems/ruby-1.9.2-p180:/home/example/.rvm/gems/ruby-1.9.2-p180@global"
  MY_RUBY_HOME: "/home/example/.rvm/rubies/ruby-1.9.2-p180"
  IRBRC:        "/home/example/.rvm/rubies/ruby-1.9.2-p180/.irbrc"
  RUBYOPT:      ""
  gemset:       ""

【问题讨论】:

  • 您是否在项目中使用 .rvmrc 文件?如果是这样,它是否指向正确的红宝石和宝石?
  • 这是我的 .rvmrc 中的内容:rvm_gemset_create_on_use_flag=1 rvm_trust_rvmrcs_flag=1 不知道如何让它执行您的建议。
  • 很抱歉回复晚了。 .rvmrc 文件用于指定要在此项目中使用的 ruby​​ 和 gemset。我通常这样创建我的:> echo "rvm 1.9.2@myproject" > .rvmrc 现在当我 cd 进入该目录时,rvm 将自动切换到 ruby​​ 版本 1.9.2 并将我的 gemset 更改为 myproject。

标签: ruby-on-rails ruby ruby-on-rails-3 rvm capistrano


【解决方案1】:

实际上,rvm-capistrano 文档页面上的最新文档指出它必须是这样的:

# RVM bootstrap: change to your Ruby and GemSet
require 'rvm/capistrano'
set :rvm_ruby_string,  ENV['GEM_HOME'].gsub(/.*\//,"")
set :rvm_type, :user

【讨论】:

    【解决方案2】:
    失败:“rvm_path=$HOME/.rvm/ /usr/local/bin/rvm-shell '1.9.2' -c 'bundle install --gemfile /home/example/staging.example.com/releases/20110714180125/Gemfile --path /home/example/staging.example.com/shared/bundle --deployment --quiet --without development production'

    确保在服务器中运行 bundle install 时已安装捆绑程序并使用正确的路径。如果没有安装,则运行gem install bundler进行安装。

    【讨论】:

      【解决方案3】:

      如果您安装了捆绑程序,请执行以下操作:

      改变这一行 --> set :rvm_ruby_string, '1.9.2'

      到这里 --> set :rvm_ruby_string, 'ruby-1.9.2-p180'

      这对我有用。

      了解你的 ruby​​s 版本 --> rvm list

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-04-05
        • 2012-12-20
        相关资源
        最近更新 更多