I have a Rails app that I've been deploying with Capistrano. I installed RVM on the server since I wanted to use a newer version of Ruby and added this to my deploy.rb file (per various instructions I found):
我有一个我用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
When I run, cap deploy
, this happens:
当我运行cap cap时,会发生这种情况:
[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
Why is capistrano using Ruby 1.8? My path is obviously messed up, too.
为什么capistrano使用Ruby 1.8?我的道路显然也搞砸了。
Here's the output of rvm info
on staging.example.com:
这是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: ""
3 个解决方案
#1
3
Actually the latest docs on rvm-capistrano documentation page stated that it must be something like this:
实际上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
2
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'
Make sure you have bundler installed and right path while running bundle install
in server. If it is not installed then run gem install bundler
to install.
在服务器中运行bundle install时,请确保已安装Bundler并使用正确的路径。如果未安装,则运行gem install bundler进行安装。
#3
1
If you have bundler installed, do this:
如果安装了bundler,请执行以下操作:
Change this line --> set :rvm_ruby_string, '1.9.2'
改变这一行 - > set:rvm_ruby_string,'1.9.2'
to this --> set :rvm_ruby_string, 'ruby-1.9.2-p180'
对此 - > set:rvm_ruby_string,'ruby-1.9.2-p180'
this works for me.
这对我有用。
to know your rubys versions --> rvm list
要知道你的rubys版本 - > rvm list
#1
3
Actually the latest docs on rvm-capistrano documentation page stated that it must be something like this:
实际上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
2
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'
Make sure you have bundler installed and right path while running bundle install
in server. If it is not installed then run gem install bundler
to install.
在服务器中运行bundle install时,请确保已安装Bundler并使用正确的路径。如果未安装,则运行gem install bundler进行安装。
#3
1
If you have bundler installed, do this:
如果安装了bundler,请执行以下操作:
Change this line --> set :rvm_ruby_string, '1.9.2'
改变这一行 - > set:rvm_ruby_string,'1.9.2'
to this --> set :rvm_ruby_string, 'ruby-1.9.2-p180'
对此 - > set:rvm_ruby_string,'ruby-1.9.2-p180'
this works for me.
这对我有用。
to know your rubys versions --> rvm list
要知道你的rubys版本 - > rvm list