2011-07-14 28 views
7

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:  "" 
+1

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? –

+0

Đâ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

+0

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. –

Trả lời

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 con đường chắc chắn rằng bạn đã cài đặt bundler và bên phải trong khi chạy bundle install trong máy chủ. Nếu nó chưa được cài đặt, hãy chạy gem install bundler để cài đặt.

1

Nếu bạn có bundler cài đặt, làm điều này:

Thay đổi dòng này ->set :rvm_ruby_string, '1.9.2'

này ->set :rvm_ruby_string, 'ruby-1.9.2-p180'

làm việc này cho tôi.

biết phiên bản Rubys của bạn ->rvm list

3

Trên thực tế các tài liệu mới nhất về trang tài liệu RVM-capistrano tuyên bố rằng nó phải là một cái gì đó như thế này:

# RVM bootstrap: change to your Ruby and GemSet 
require 'rvm/capistrano' 
set :rvm_ruby_string, ENV['GEM_HOME'].gsub(/.*\//,"") 
set :rvm_type, :user 
Các vấn đề liên quan