[英]Can't deploy Rails app with Capistrano and RVM
我有一个使用 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
的 output:
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: ""
实际上 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
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'
确保在服务器中运行bundle install
时安装了 bundler 和正确的路径。 如果未安装,则运行gem install bundler
进行安装。
如果您安装了捆绑程序,请执行以下操作:
更改这一行 --> set:rvm_ruby_string, '1.9.2'
对此 --> set:rvm_ruby_string, 'ruby-1.9.2-p180'
这对我有用。
了解你的 rubys 版本 --> rvm list
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.