2011-07-14 11 views
7

के साथ रेल ऐप को तैनात नहीं किया जा सकता है मेरे पास एक रेल ऐप है जिसे मैं कैपिस्ट्रानो के साथ तैनात कर रहा हूं। मैं सर्वर पर RVM स्थापित के बाद से मैं रूबी के एक नए संस्करण का उपयोग करना चाहता है और मेरे 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 

रूबी 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 ([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

आप के साथ एक .rvmrc फ़ाइल का उपयोग कर रहे आपका प्रोजेक्ट? यदि हां, तो क्या यह सही रूबी और रत्न की ओर इशारा करता है? –

+0

यहां मेरे .rvmrc में क्या है: 'rvm_gemset_create_on_use_flag = 1 rvm_trust_rvmrcs_flag = 1' यह सुनिश्चित नहीं है कि आप जो सुझाव दे रहे हैं उसे करने के लिए इसे कैसे प्राप्त करें। – Devin

+0

मुझे देर से प्रतिक्रिया के लिए खेद है। .rvmrc फ़ाइल का उपयोग यह निर्दिष्ट करने के लिए किया जाता है कि आप इस प्रोजेक्ट के साथ किस रूबी और रत्न का उपयोग करना चाहते हैं। मैं आमतौर पर इस तरह मेरा निर्माण करता हूं:> गूंज "आरवीएम [email protected]"> .rvmrc अब जब मैं उस निर्देशिका में सीडी करता हूं, तो आरवीएम स्वचालित रूप से रूबी संस्करण 1.9.2 पर स्विच हो जाएगा और मेरे रत्न को myproject पर बदल देगा। –

उत्तर

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' 

करते समय सर्वर में bundle install चल सुनिश्चित करें कि आप बंडलर स्थापित किया है और सही है पथ बनाओ। यदि यह स्थापित नहीं है तो स्थापित करने के लिए gem install bundler चलाएं।

1

आप बंडलर स्थापित है, तो ऐसा करते हैं: इस लाइन

बदलें ->set :rvm_ruby_string, '1.9.2'

इस के लिए

->set :rvm_ruby_string, 'ruby-1.9.2-p180'

यह मेरे लिए काम करता है।

अपने Rubys संस्करणों को पता है ->rvm list

3

असल 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 
संबंधित मुद्दे