2012-03-14 9 views
5

Próbuję poprawnie używać Capistrano i RVM w celu wdrożenia mojej aplikacji Ruby on Rails 3.2.2 na zdalnym komputerze z systemem Ubuntu 10.04 LTS. To szwy, że rozwiązałem mój poprzedni problem związany z "Rvm - Capistrano integration on Linux Ubuntu". Jednak na rozmieszczanie pojawia się następujący błąd związany z gem DelayedJob:Jak rozwiązać "Musisz dodać" demony "do Gemfile, jeśli chcesz go użyć" błąd w trybie produkcji?

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

Nawet jeśli wyjaśnienie błędu jest „Trzeba dodać gem«demonów»do Gemfile jeśli chcesz go użyć”, już Dodano daemons gem do mojego Gemfile (z powyższego wyjścia można nawet zauważyć, że jestem „Używanie demonów (1.1.8)”):

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

Więc czym polega problem? Jak mogę to rozwiązać?


W moim pliku deploy.rb mam:

$:.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' 
... 

PS:: Terminal wyjściowy okno:

$ 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

skrypt/delayed_job jest twoje, czy nie? To wymaga bundler w środku? – shingara

+0

@shingara - Co masz na myśli mówiąc "czy to twój, czy nie"? Z "script/delayed_job", do jakiego pliku się odwołujesz? Jednak w powyższym kodzie/danych wyjściowych jest wszystko "moje" (czyli kod i dane wyjściowe są "rzeczywiste"/"co używam i otrzymuję"). – user502052

+0

w protokole po wykonaniu polecenia nie powiodło się: 'RAILS_ENV = skrypt produkcyjny/delayed_job stop' Chcę się dowiedzieć, czy skrypt jest generowany lub czy go tworzysz. – shingara

Odpowiedz

2

skrypt Run/delayed_job z Bundler: bundle exec script/delayed_job start

+0

Twój kod nie działa i otrzymuję komunikat "' bundler: command not found: RAILS_ENV = production - Zainstaluj brakujące pliki wykonywalne gem z opcją 'bundle install'' "(oczywiście próbuję uruchomić' bundle install' na komputerze serwera, ale to nie aktualizuje żadnego klejnotu, ponieważ wszystkie są już zaktualizowane). Próbowałem również użyć "' bundle exec rake script/delayed_job stop', ale pojawia się ten błąd: 'rake przerwany! Nie wiem jak zbudować zadanie 'stop''". – user502052

+0

1- Skrypt delayed_job nie jest zadaniem rake, więc oczywiście rake nie zadziała. 2- Wygląda na to, że źle zmodyfikowałeś moje polecenie. Spróbuj przenieść env na początek, jak np. 'RAILS_ENV = production execle script/delayed_job start'. Należy pamiętać, że należy go uruchomić z katalogu głównego aplikacji. – betamatt

+1

Nie zapomnij o pliku wykonywalnym script/delayed_job: chmod + x script/delayed_job – Hannes

Powiązane problemy