2012-03-14 29 views
5

Ruby on Rails 3.2.2 uygulamasını Ubuntu 10.04 LTS çalıştıran uzak makineye dağıtmak için Capistrano ve RVM'yi doğru şekilde kullanmaya çalışıyorum. "Rvm - Capistrano integration on Linux Ubuntu" ile ilgili önceki sorunumu çözdüğüm dikişleri. Zaten, hata açıklaması "Kullanmaya isterseniz sizin Gemfile için mücevher 'cinleri' eklemeniz gerekir" dir"Üretim modunda hata" kullanmak istiyorsanız "Gem 'için gem' i gem 'eklemeniz gerekir" nasıl çözülür?

... 
    * executing "cd /srv/www/<APP_NAME>/releases/20120314135318 && bundle install" 
    servers: ["<DOMAIN>"] 
    [<DOMAIN>] executing command 
    [<DOMAIN>] rvm_path=/usr/local/rvm /usr/local/rvm/bin/rvm-shell 'ruby-1.9.3-p125' -c 'cd /srv/www/<APP_NAME>/releases/20120314135318 && bundle install'  ** [out :: <DOMAIN>] Using rake (0.9.2.2) 
** [out :: <DOMAIN>] Using builder (3.0.0) 
    ... 
** [out :: <DOMAIN>] Using daemons (1.1.8) 
** [out :: <DOMAIN>] Using delayed_job (3.0.1) 
** [out :: <DOMAIN>] Using delayed_job_active_record (0.3.2) 
    ... 
** [out :: <DOMAIN>] Your bundle is complete! It was installed into /srv/www/<APP_NAME>/shared/bundle 
    ... 
    [<DOMAIN>] executing command 
    [<DOMAIN>] rvm_path=/usr/local/rvm /usr/local/rvm/bin/rvm-shell 'ruby-1.9.3-p125' -c 'cd /srv/www/<APP_NAME>/current; RAILS_ENV=production script/delayed_job stop' 
*** [err :: <DOMAIN>] /usr/local/rvm/gems/ruby-1.9.3-p125/gems/delayed_job-3.0.1/lib/delayed/command.rb:4:in `rescue in <top (required)>' 
*** [err :: <DOMAIN>] : 
*** [err :: <DOMAIN>] You need to add gem 'daemons' to your Gemfile if you wish to use it. 
*** [err :: <DOMAIN>] (
*** [err :: <DOMAIN>] RuntimeError 
*** [err :: <DOMAIN>]) 
*** [err :: <DOMAIN>] from /usr/local/rvm/gems/ruby-1.9.3-p125/gems/delayed_job-3.0.1/lib/delayed/command.rb:1:in `<top (required)>' 
*** [err :: <DOMAIN>] from /usr/local/rvm/gems/ruby-1.9.3-p125/gems/activesupport-3.2.2/lib/active_support/dependencies.rb:251:in `require' 
*** [err :: <DOMAIN>] from /usr/local/rvm/gems/ruby-1.9.3-p125/gems/activesupport-3.2.2/lib/active_support/dependencies.rb:251:in `block in require' 
*** [err :: <DOMAIN>] from /usr/local/rvm/gems/ruby-1.9.3-p125/gems/activesupport-3.2.2/lib/active_support/dependencies.rb:236:in `load_dependency' 
*** [err :: <DOMAIN>] from /usr/local/rvm/gems/ruby-1.9.3-p125/gems/activesupport-3.2.2/lib/active_support/dependencies.rb:251:in `require' 
*** [err :: <DOMAIN>] from script/delayed_job:4:in `<main>' 
    command finished in 7512ms 
*** [deploy:update_code] rolling back 
    ... 

failed: "rvm_path=$HOME/.rvm/ $HOME/.rvm/bin/rvm-shell 'ruby-1.9.3-p125' -c 'cd /srv/www/<APP_NAME>/releases && tar xzf /tmp/20120314140345.tar.gz && rm /tmp/20120314140345.tar.gz'" on <DOMAIN> 

bile: Ancak, dağıtma hakkında ben DelayedJob mücevher ilgili aşağıdaki hatayı alıyorum

... 
gem 'delayed_job' 
gem 'delayed_job_active_record' 
gem 'daemons' 
... 

Yani, sorunu nedir: (hatta ben "cinleri (1.1.8) kullanma" am not yukarıdaki çıkışından) benim Gemfile için daemons mücevher eklendi? Bunu nasıl çözebilirim? Benim deploy.rb dosyasında


Ben:

$:.unshift(File.expand_path('./lib', ENV['rvm_path'])) 
require 'rvm/capistrano' 
set :rvm_ruby_string, 'ruby-1.9.3-p125' 
set :rvm_type, :user 
require 'bundler/capistrano' 
... 

dip not: Terminal penceresi çıkışı:

$ ruby -v 
> ruby 1.9.3p125 (2012-02-16 revision 34643) [i686-linux] 
$ which ruby 
> /usr/local/rvm/rubies/ruby-1.9.3-p125/bin/ruby 
+0

komut/delayed_job sizindir ya da değil? İçinde bundler gerekli mi? – shingara

+0

@shingara - "Senin olsun ya da değil" ile ne demek istiyorsun? "Script/delayed_job" ile hangi dosyadan bahsediyorsunuz? Ancak, yukarıdaki kod/çıktıda hepsi "mayın" (yani, kod ve çıktılar "gerçek"/"ne kullanıyorum ve alıyorum"). – user502052

+0

oturumunda geçmişte komut başarısız oldu: 'RAILS_ENV = üretim senaryosu/delayed_job stop' Bu betiğin üretilip üretilmediğini veya oluşturup oluşturmayacağını bilmek istiyorum. – shingara

cevap

2

Çalıştır komut/delayed_job paketleyici ile: bundle exec script/delayed_job start

+0

Kodunuz çalışmıyor ve "' bundler: komut bulunamadı: RAILS_ENV = prodüksiyon - 'bundle install'' "ile eksik gem çalıştırılabilirlerini kurun (tabii ki sunucuda' bundle install' çalıştırmayı denerim ama Tüm bunlar zaten güncellenmiş olduğundan herhangi bir gem güncelleştirmez. Ayrıca "' bundle exec rake script/delayed_job stop' kullanmayı denedim, ama şu hatayı alıyorum: 'komisyon iptal edildi!' Dur 'görevinin nasıl oluşturulacağını bilmiyorum. – user502052

+0

1- delayed_job betiği bir komisyon görevi değil, tabiki rake çalışmayacaktır. 2- Komutumu yanlış değiştirmiş gibisiniz. Env'yi 'RAILS_ENV = üretim paketi exec betiği/delayed_job start' gibi öne taşımaya çalışın. Bunun uygulama kök dizininden çalıştırılması gerektiğini lütfen unutmayın. – betamatt

+1

Komut dosyasını/delayed_job dosyasını çalıştırmayı unutmayın: chmod + x script/delayed_job – Hannes