Tôi có ứng dụng Rails mà tôi đã triển khai với Capistrano. Tôi đã cài đặt RVM trên máy chủ kể từ khi tôi muốn sử dụng một phiên bản mới hơn của Ruby và bổ sung này để tập deploy.rb của tôi (theo hướng dẫn khác nhau tôi thấy):Không thể triển khai ứng dụng Rails với Capistrano và RVM
$:.unshift(File.expand_path('./lib', ENV['rvm_path']))
require 'rvm/capistrano'
set :rvm_ruby_string, '1.9.2'
set :rvm_type, :user
Khi tôi chạy, cap deploy
, điều này xảy ra:
[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
Tại sao capistrano sử dụng Ruby 1.8? Con đường của tôi rõ ràng là sai lầm, quá.
Dưới đây là đầu ra của rvm info
trên staging.example.com:
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 ([email protected]) [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/[email protected]/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/[email protected]"
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: ""
Bạn đang sử dụng một tập tin .rvmrc với dự án của bạn? Nếu vậy, nó trỏ đến ruby và gemset phải không? –
Đây là những gì trong .rvmrc của tôi: 'rvm_gemset_create_on_use_flag = 1 rvm_trust_rvmrcs_flag = 1' Không chắc chắn làm thế nào để làm cho nó làm những gì bạn đang đề xuất. – Devin
Tôi xin lỗi vì phản hồi muộn. Tệp .rvmrc được sử dụng để chỉ định ruby và gemset nào bạn muốn sử dụng với dự án này. Tôi thường tạo ra của tôi như thế này:> echo "rvm [email protected]"> .rvmrc Bây giờ khi tôi cd vào thư mục đó, rvm sẽ tự động chuyển sang phiên bản ruby 1.9.2 và thay đổi gemset của tôi thành myproject. –