2012-05-21 2 views
3

정말이 문제에 대한 도움이 절실히 필요하며 조금 이상 잃어 버렸습니다.Rails 3.2.2 RVM 시스템 Wide Capistrano 설치시 보석을 찾을 수 없음

준비 및 프로덕션 서버를 허용하기 위해 Capistrano Ext를 사용하여 새 프로덕션 서버를 배포하려고하지만 번들 설치 --deployment를 성공적으로 실행하지 못합니다.

캡 준비 배포는 기존의 우분투 시스템에 잘 작동하지만 다른 디렉토리에서 예상되는 결과를 -v 루비 -v 및 레일을

my-app$ sh -c 'cd /var/www/html/rails/myapp/releases/20120519174459&& export PATH=/usr/local/bin:/usr/local/mysql/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/git/bin:/opt/local/bin:/usr/local/rvm/gems/ruby-1.9.3-p194/bin:/usr/local/rvm/gems/[email protected]/bin:/usr/local/rvm/rubies/ruby-1.9.3-p194/bin:/usr/local/rvm/bin && bundle install --deployment' 
    Fetching gem metadata from http://rubygems.org/...... 
    Fetching gem metadata from http://rubygems.org/.. 
    Installing rake (0.9.2.2) 
    Gem::LoadError: Could not find rubygems-bundler (>= 0) amongst [] 
    An error occured while installing rake (0.9.2.2), and Bundler cannot continue. 
    Make sure that `gem install rake -v '0.9.2.2'` succeeds before bundling. 

을 다음과 같이 새 서버는 상수가 실패한다

my-home$ ruby -v 
ruby 1.9.3p194 (2012-04-20 revision 35410) [x86_64-linux] 

my-home$ rails -v 
Rails 3.2.2 

그들은 모두 사용할 수있는 생산 servershows의 로컬 보석의 목록

my-home$ gem list 

*** LOCAL GEMS *** 

actionmailer (3.2.3, 3.2.2) 
actionpack (3.2.3, 3.2.2) 
active_utils (1.0.3) 
activemerchant (1.21.0) 
activemodel (3.2.3, 3.2.2) 
activerecord (3.2.3, 3.2.2) 
activeresource (3.2.3, 3.2.2) 
activesupport (3.2.3, 3.2.2) 
addressable (2.2.7) 
ansi (1.4.2) 
arel (3.0.2) 
bcrypt-ruby (3.0.1) 
bootstrap-sass (2.0.1) 
builder (3.0.0) 
bundle (0.0.1) 
bundler (1.1.3, 1.0.21) 
cancan (1.6.7) 
capistrano (2.12.0, 2.11.2) 
capistrano-ext (1.2.1) 
cocaine (0.2.1) 
coffee-rails (3.2.2) 
coffee-script (2.2.0) 
coffee-script-source (1.3.3, 1.2.0) 
daemon_controller (1.0.0) 
devise (2.0.4) 
erubis (2.7.0) 
execjs (1.3.2, 1.3.0) 
faraday (0.7.6) 
fastthread (1.0.7) 
haml (3.1.4) 
hashie (1.2.0) 
highline (1.6.12, 1.6.11) 
hike (1.2.1) 
i18n (0.6.0) 
journey (1.0.3) 
jquery-datatables-rails (1.9.1.3) 
jquery-rails (2.0.2, 2.0.1) 
jquery-ui-rails (0.3.0) 
jruby-pageant (1.0.2) 
json (1.7.3, 1.6.5) 
libv8 (3.3.10.4 x86_64-linux) 
mail (2.4.4) 
metaclass (0.0.1) 
mime-types (1.18, 1.17.2) 
minitest (2.11.3) 
mocha (0.10.5) 
money (3.7.1) 
multi_json (1.3.5, 1.1.0) 
multipart-post (1.1.5) 
mysql2 (0.3.11) 
net-scp (1.0.4) 
net-sftp (2.0.5) 
net-ssh (2.4.0, 2.3.0) 
net-ssh-gateway (1.1.0) 
nifty-generators (0.4.6) 
oauth (0.4.5) 
oauth2 (0.5.2) 
omniauth (1.0.3) 
omniauth-facebook (1.2.0) 
omniauth-google (1.0.1) 
omniauth-linkedin (0.0.6) 
omniauth-oauth (1.0.1) 
omniauth-oauth2 (1.0.0) 
omniauth-twitter (0.0.8) 
orm_adapter (0.0.6) 
paperclip (3.0.2) 
passenger (3.0.12) 
polyamorous (0.5.0) 
polyglot (0.3.3) 
rack (1.4.1) 
rack-cache (1.2) 
rack-ssl (1.3.2) 
rack-test (0.6.1) 
rails (3.2.3, 3.2.2) 
railties (3.2.3, 3.2.2) 
rake (0.9.2.2) 
rdoc (3.12) 
RedCloth (4.2.9) 
rubygems-bundler (1.0.0) 
rvm (1.11.3.3) 
sass (3.1.18, 3.1.15) 
sass-rails (3.2.5) 
simple_form (2.0.1) 
simple_oauth (0.1.5) 
sprockets (2.1.3, 2.1.2) 
sqlite3 (1.3.6) 
squeel (1.0.1) 
therubyracer (0.10.1, 0.9.10) 
thor (0.14.6) 
tilt (1.3.3) 
timeliness (0.3.4) 
treetop (1.4.10) 
turn (0.9.4) 
twitter (2.2.0) 
tzinfo (0.3.33, 0.3.32) 
uglifier (1.2.4, 1.2.3) 
validates_timeliness (3.0.8) 
warden (1.1.1) 
will_paginate (3.0.3) 
,691,363 (210)

서버 넓은 RVM 시스템은

my-home$ rvm list 

    rvm rubies 

    =* ruby-1.9.3-p194 [ x86_64 ] 

    # => - current 
    # =* - current && default 
    # * - default 

my-home$ rvm info 

    RVM is not a function, selecting rubies with 'rvm use ...' will not work. 
    You need to change your terminal settings to allow shell login. 
    Please visit https://rvm.io/workflow/screen/ for example. 

    ruby-1.9.3-p194: 

    system: 
     uname:  "Linux totg01 2.6.38-14-generiC#58-Ubuntu SMP Tue Mar 27 20:04:55 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux" 
     bash:  "/bin/bash => GNU bash, version 4.2.8(1)-release (x86_64-pc-linux-gnu)" 
     zsh:   " => not installed" 

    rvm: 
     version:  "rvm 1.13.5 (stable) by Wayne E. Seguin <[email protected]>, Michal Papis <[email protected]> [https://rvm.io/]" 
     updated:  "4 days 2 hours 5 minutes 13 seconds ago" 

    ruby: 
     interpreter: "ruby" 
     version:  "1.9.3p194" 
     date:   "2012-04-20" 
     platform:  "x86_64-linux" 
     patchlevel: "2012-04-20 revision 35410" 
     full_version: "ruby 1.9.3p194 (2012-04-20 revision 35410) [x86_64-linux]" 

    homes: 
     gem:   "/usr/local/rvm/gems/ruby-1.9.3-p194" 
     ruby:   "/usr/local/rvm/rubies/ruby-1.9.3-p194" 

    binaries: 
     ruby:   "/usr/local/rvm/rubies/ruby-1.9.3-p194/bin/ruby" 
     irb:   "/usr/local/rvm/rubies/ruby-1.9.3-p194/bin/irb" 
     gem:   "/usr/local/rvm/rubies/ruby-1.9.3-p194/bin/gem" 
     rake:   "/usr/local/rvm/gems/ruby-1.9.3-p194/bin/rake" 

    environment: 
     PATH:   "/usr/local/rvm/gems/ruby-1.9.3-p194/bin:/usr/local/rvm/gems/[email protected]/bin:/usr/local/rvm/rubies/ruby-1.9.3-p194/bin:/usr/local/rvm/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games" 
     GEM_HOME:  "/usr/local/rvm/gems/ruby-1.9.3-p194" 
     GEM_PATH:  "/usr/local/rvm/gems/ruby-1.9.3-p194:/usr/local/rvm/gems/[email protected]" 
     MY_RUBY_HOME: "/usr/local/rvm/rubies/ruby-1.9.3-p194" 
     IRBRC:  "/usr/local/rvm/rubies/ruby-1.9.3-p194/.irbrc" 
     RUBYOPT:  "" 
     gemset:  "" 

올바른 것 같다 그러나 ./vendor/bundle

app-dir$ ruby -v 
ruby 1.9.3p194 (2012-04-20 revision 35410) [x86_64-linux] 

app-dir$ rails -v 
/usr/local/rvm/gems/ruby-1.9.3-p194/gems/bundler-1.1.3/lib/bundler/spec_set.rb:90:in `block in materialize': Could not find rake-0.9.2.2 in any of the sources (Bundler::GemNotFound) 
    from /usr/local/rvm/gems/ruby-1.9.3-p194/gems/bundler-1.1.3/lib/bundler/spec_set.rb:83:in `map!' 
    from /usr/local/rvm/gems/ruby-1.9.3-p194/gems/bundler-1.1.3/lib/bundler/spec_set.rb:83:in `materialize' 
    from /usr/local/rvm/gems/ruby-1.9.3-p194/gems/bundler-1.1.3/lib/bundler/definition.rb:127:in `specs' 
    from /usr/local/rvm/gems/ruby-1.9.3-p194/gems/bundler-1.1.3/lib/bundler/environment.rb:27:in `specs' 
    from /usr/local/rvm/gems/[email protected]/gems/rubygems-bundler-1.0.0/lib/rubygems-bundler/noexec.rb:41:in `candidate?' 
    from /usr/local/rvm/gems/[email protected]/gems/rubygems-bundler-1.0.0/lib/rubygems-bundler/noexec.rb:59:in `setup' 
    from /usr/local/rvm/gems/[email protected]/gems/rubygems-bundler-1.0.0/lib/rubygems-bundler/noexec.rb:74:in `<top (required)>' 
    from /usr/local/rvm/rubies/ruby-1.9.3-p194/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:60:in `require' 
    from /usr/local/rvm/rubies/ruby-1.9.3-p194/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:60:in `rescue in require' 
    from /usr/local/rvm/rubies/ruby-1.9.3-p194/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:35:in `require' 
    from /usr/local/rvm/gems/ruby-1.9.3-p194/bin/ruby_noexec_wrapper:9:in `<main>' 

시스템에 아무 것도없는 한 서사시가 응용 프로그램 디렉토리에서 실패가 우분투 11.04와 루비가 기본으로 1.93와 RVM 시스템 전반 사용하여 설치됩니다

deploy.rb은 다음과 같다 :

# This has been added due to multi deployment staging 
set :stages, %w(staging production) 
set :default_stage, "staging" 

require 'capistrano/ext/multistage' 

default_run_options[:pty] = true 

set :user, 'appuser' 
set :application, "app" 
set :keep_releases, 10 

set :deploy_to, "/var/www/html/rails/#{application}" 
set :repository, "[email protected]:/myapps/rails/#{application}.git" 
set :deploy_via, :copy 
set :ssh_options, {:forward_agent => true} 
set :scm, :git 
set :branch, 'master' 
set :scm_verbose, true 
set :use_sudo, false 

# This has been added due to multi deployment staging 
# since :domain is defined in another file (staging.rb and production.rb), 
# we need to delay its assignment until they're loaded 
set(:domain) { "#{domain}" } 
role(:web) { domain } 
role(:app) { domain } 
role(:db, :primary => true) { domain } 

# If you are using Passenger mod_rails uncomment this: 
namespace :deploy do 
    desc "cause Passenger to initiate a restart" 
    task :restart do 
    run "touch #{current_path}/tmp/restart.txt" 
    end 
    desc "reload the database with seed data" 
    task :seed do 
    run "cd #{current_path}; rake db:seed RAILS_ENV=production" 
    end 
end 

before "deploy:assets:precompile", :bundle_install 

after "deploy:update_code", :bundle_install 
desc "install the necessary prerequisites" 
task :bundle_install, :roles => :app do 
    run "cd #{release_path}&& export PATH=/usr/local/bin:/usr/local/mysql/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/git/bin:/opt/local/bin:/usr/local/rvm/gems/ruby-1.9.3-p194/bin:/usr/local/rvm/gems/[email protected]/bin:/usr/local/rvm/rubies/ruby-1.9.3-p194/bin:/usr/local/rvm/bin && bundle install --deployment" 
    run "cp -Rf #{shared_path}/config/* #{release_path}/config/" 
end 
,536,913 63,210

다른 두 준비 및 생산 파일이 있습니다 ....

배포/staging.rb

set :domain, "staging.myapp.com" 
set :rails_env, "staging" 
set :default_environment, { 
    'PATH' => "/usr/local/bin:/usr/local/mysql/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/git/bin:/opt/local/bin" 
} 

배포/production.rb

set :domain, "production.myapp.com" 
set :rails_env, "production" 
set :default_environment, { 
    'PATH' => "/usr/local/rvm/gems/ruby-1.9.3-p194/bin:/usr/local/rvm/gems/[email protected]/bin:/usr/local/rvm/rubies/ruby-1.9.3-p194/bin:/usr/local/rvm/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/mysql/bin" 
} 

그래서 실패가 번들로 노력을 새로 배포 된 응용 프로그램 디렉토리에 --deployment를 설치하십시오. 번들 설치 --nodeployment가 실행되면 제대로 작동합니다!

무엇이 잘못되었거나 구성되지 않았습니까? , https://rvm.io/integration/capistrano/

그냥 읽을 :이을 제압하려고 이일 보냈다 그러나 당신이 카피 스트라 노의 RVM 지침을 그리워했다

답변

6

thios 작동하지 않습니다 이유는 이해가 보인다 doen't

설치 :

gem install rvm-capistrano 

또는 Gemfile에 추가 :

을 나는 기본적으로 당신이 적절한 루비를 선택할 수 있습니다 보석 버전을 사용하도록 알려 드릴 것입니다 0
gem 'rvm-capistrano' 

예제 Capfile 배포.RB :

set :rvm_type, :system # :user is the default 
set :rvm_ruby_string, ENV['GEM_HOME'].gsub(/.*\//,"") # Read from local system 

require "rvm/capistrano" # Load RVM's capistrano plugin. 

그러나 더 많은 옵션을 사용할 수 있습니다대로 문서를 확인 이동 : https://rvm.io/integration/capistrano/

+0

감사합니다 포인터. 결국 모든 보석, 루비 인스턴스 및 rvm을 제거하고 다시 설치해야했습니다! 나는 설치 과정에서 무엇이 잘못되었는지를 모른다. 이 작업이 완료되면 rvm 쉘을 사용하여 명령 줄에서 번들 설치 --deployment를 수행 할 수 있습니다 (rvm-capistrano gem 사용). 내가 당신의 솔루션을 추가했을 때도 Capistrano와 함께 작업했는데, 아이디어에 대해 대단히 감사 드리며 처음 설치를하지 않았 더라면 처음에는 문제가 해결되었을 것입니다! – pshear0

+0

당신의 초기 문제는'rubygems-bundler 1.0.0'에 의해 야기되었습니다 - rvm의 새로운 설치는 새로운 버전 인'1.0.2'를 수정했습니다. – mpapis

+0

당신은 단지 고통과 혼란의 시간을 끝 냈습니다. – Max

0
  1. 하지 사용 rvm1/capistrano3 또는 RVM/카피 스트라 노를 수행; 하지 마십시오 세트 : pty.

  2. 서버의 러너 사용자에 대한 변경 ~/.rvmrc,이에 - 대화 형으로 실행되지 때 그 자체를 죽이는 줄 앞에 을 제공하는 참고 : 대한

# get rvm for non-interactive shells (eg capistrano) too 
source /etc/profile.d/rvm.sh 
export BASH_ENV=$HOME/.bashrc 
export rvm_is_not_a_shell_function=0 

# If not running interactively, don't do anything 
[ -z "$PS1" ] && return 
관련 문제