2013-10-17 21 views
7

Próbuję wdrożyć moją aplikację szyny w instancję EC2 za pomocą Capistrano 3.0. Teraz stosuję następujące dane wyjściowe, które pojawiają się podczas uruchamiania "cap production deploy" lub "cap production bundler: install".Program pakujący Capistrano: instalacja nie powiedzie się

DEBUG [5b379979] Running /usr/bin/env if test ! -d /var/www/app/current; then echo "Directory does not exist '/var/www/app/current'" 1>&2; false; fi on ec2-75-101-200-185.compute-1.amazonaws.com 
DEBUG [5b379979] Command: if test ! -d /var/www/app/current; then echo "Directory does not exist '/var/www/app/current'" 1>&2; false; fi 
DEBUG [5b379979] Finished in 2.285 seconds command successful. 
INFO [f15c9f08] Running /usr/bin/env bundle --gemfile /var/www/app/current/Gemfile --path /var/www/app/shared/bundle --deployment --verbose --binstubs /var/www/billtune/shared/bin --without development test on ec2-75-101-200-185.compute-1.amazonaws.com 
DEBUG [f15c9f08] Command: cd /var/www/app/current && /usr/bin/env bundle --gemfile /var/www/app/current/Gemfile --path /var/www/app/shared/bundle --deployment --verbose --binstubs /var/www/app/shared/bin --without development test 
DEBUG [f15c9f08] /usr/bin/env: 
DEBUG [f15c9f08] bundle 
DEBUG [f15c9f08] : No such file or directory 
DEBUG [f15c9f08]  
cap aborted! 
bundle stdout: Nothing written 
bundle stderr: Nothing written 
/Users/shaimo-mbp/.rvm/gems/ruby-1.9.3-p448/gems/sshkit-1.0.0/lib/sshkit/command.rb:94:in `exit_status=' 
/Users/shaimo-mbp/.rvm/gems/ruby-1.9.3-p448/gems/sshkit-1.0.0/lib/sshkit/backends/netssh.rb:125:in `block (4 levels) in _execute' 
/Users/shaimo-mbp/.rvm/gems/ruby-1.9.3-p448/gems/net-ssh-2.7.0/lib/net/ssh/connection/channel.rb:551:in `call' 
/Users/shaimo-mbp/.rvm/gems/ruby-1.9.3-p448/gems/net-ssh-2.7.0/lib/net/ssh/connection/channel.rb:551:in `do_request' 
/Users/shaimo-mbp/.rvm/gems/ruby-1.9.3-p448/gems/net-ssh-2.7.0/lib/net/ssh/connection/session.rb:561:in `channel_request' 
/Users/shaimo-mbp/.rvm/gems/ruby-1.9.3-p448/gems/net-ssh-2.7.0/lib/net/ssh/connection/session.rb:465:in `dispatch_incoming_packets' 
/Users/shaimo-mbp/.rvm/gems/ruby-1.9.3-p448/gems/net-ssh-2.7.0/lib/net/ssh/connection/session.rb:221:in `preprocess' 
/Users/shaimo-mbp/.rvm/gems/ruby-1.9.3-p448/gems/net-ssh-2.7.0/lib/net/ssh/connection/session.rb:205:in `process' 
/Users/shaimo-mbp/.rvm/gems/ruby-1.9.3-p448/gems/net-ssh-2.7.0/lib/net/ssh/connection/session.rb:169:in `block in loop' 
/Users/shaimo-mbp/.rvm/gems/ruby-1.9.3-p448/gems/net-ssh-2.7.0/lib/net/ssh/connection/session.rb:169:in `loop' 
/Users/shaimo-mbp/.rvm/gems/ruby-1.9.3-p448/gems/net-ssh-2.7.0/lib/net/ssh/connection/session.rb:169:in `loop' 
/Users/shaimo-mbp/.rvm/gems/ruby-1.9.3-p448/gems/net-ssh-2.7.0/lib/net/ssh/connection/channel.rb:269:in `wait' 
/Users/shaimo-mbp/.rvm/gems/ruby-1.9.3-p448/gems/sshkit-1.0.0/lib/sshkit/backends/netssh.rb:147:in `block (2 levels) in _execute' 
/Users/shaimo-mbp/.rvm/gems/ruby-1.9.3-p448/gems/net-ssh-2.7.0/lib/net/ssh/connection/channel.rb:514:in `call' 
/Users/shaimo-mbp/.rvm/gems/ruby-1.9.3-p448/gems/net-ssh-2.7.0/lib/net/ssh/connection/channel.rb:514:in `do_open_confirmation' 
/Users/shaimo-mbp/.rvm/gems/ruby-1.9.3-p448/gems/net-ssh-2.7.0/lib/net/ssh/connection/session.rb:545:in `channel_open_confirmation' 
/Users/shaimo-mbp/.rvm/gems/ruby-1.9.3-p448/gems/net-ssh-2.7.0/lib/net/ssh/connection/session.rb:465:in `dispatch_incoming_packets' 
/Users/shaimo-mbp/.rvm/gems/ruby-1.9.3-p448/gems/net-ssh-2.7.0/lib/net/ssh/connection/session.rb:221:in `preprocess' 
/Users/shaimo-mbp/.rvm/gems/ruby-1.9.3-p448/gems/net-ssh-2.7.0/lib/net/ssh/connection/session.rb:205:in `process' 
/Users/shaimo-mbp/.rvm/gems/ruby-1.9.3-p448/gems/net-ssh-2.7.0/lib/net/ssh/connection/session.rb:169:in `block in loop' 
/Users/shaimo-mbp/.rvm/gems/ruby-1.9.3-p448/gems/net-ssh-2.7.0/lib/net/ssh/connection/session.rb:169:in `loop' 
/Users/shaimo-mbp/.rvm/gems/ruby-1.9.3-p448/gems/net-ssh-2.7.0/lib/net/ssh/connection/session.rb:169:in `loop' 
/Users/shaimo-mbp/.rvm/gems/ruby-1.9.3-p448/gems/sshkit-1.0.0/lib/sshkit/backends/netssh.rb:149:in `block in _execute' 
/Users/shaimo-mbp/.rvm/gems/ruby-1.9.3-p448/gems/sshkit-1.0.0/lib/sshkit/backends/netssh.rb:106:in `tap' 
/Users/shaimo-mbp/.rvm/gems/ruby-1.9.3-p448/gems/sshkit-1.0.0/lib/sshkit/backends/netssh.rb:106:in `_execute' 
/Users/shaimo-mbp/.rvm/gems/ruby-1.9.3-p448/gems/sshkit-1.0.0/lib/sshkit/backends/netssh.rb:54:in `execute' 
/Users/shaimo-mbp/.rvm/gems/ruby-1.9.3-p448/gems/capistrano-bundler-1.0.0/lib/capistrano/tasks/bundler.cap:20:in `block (4 levels) in <top (required)>' 
/Users/shaimo-mbp/.rvm/gems/ruby-1.9.3-p448/gems/sshkit-1.0.0/lib/sshkit/backends/abstract.rb:81:in `within' 
/Users/shaimo-mbp/.rvm/gems/ruby-1.9.3-p448/gems/capistrano-bundler-1.0.0/lib/capistrano/tasks/bundler.cap:19:in `block (3 levels) in <top (required)>' 
/Users/shaimo-mbp/.rvm/gems/ruby-1.9.3-p448/gems/sshkit-1.0.0/lib/sshkit/backends/netssh.rb:42:in `instance_exec' 
/Users/shaimo-mbp/.rvm/gems/ruby-1.9.3-p448/gems/sshkit-1.0.0/lib/sshkit/backends/netssh.rb:42:in `run' 
/Users/shaimo-mbp/.rvm/gems/ruby-1.9.3-p448/gems/sshkit-1.0.0/lib/sshkit/runners/parallel.rb:12:in `block (2 levels) in execute' 
Tasks: TOP => bundler:install 

Kiedy ssh-ing do serwera i uruchamianie tego samego polecenia ("cd/var/www/app/prąd & &/usr/bin/env wiązka --gemfile/var/www/app/prąd/Gemfile - ścieżka/var/www/app/shared/bundle --deployment --verbose --binstubs/var/www/app/shared/bin - bez testu rozwoju ") wszystko wydaje się być w porządku ...

Trochę się rozpaczliwie o tym ... Dzięki!

Odpowiedz

4

Linie

DEBUG [f15c9f08] Command: cd /var/www/app/current && /usr/bin/env bundle --gemfile /var/www/app/current/Gemfile --path /var/www/app/shared/bundle --deployment --verbose --binstubs /var/www/app/shared/bin --without development test 
DEBUG [f15c9f08] /usr/bin/env: 
DEBUG [f15c9f08] bundle 
DEBUG [f15c9f08] : No such file or directory 
DEBUG [f15c9f08]  

wskazać, że Bundler nie zostanie znaleziony, lub nie jest zainstalowany. Capistrano (zgodnie z dokumentacją tutaj: http://www.capistranorb.com/documentation/faq/why-does-something-work-in-my-ssh-session-but-not-in-capistrano/) działa w niezajętykowej, nieinteraktywnej powłoce .

Przypuszczam, że bundler jest zainstalowany na specjalnej ścieżce lub że używasz rvm, chruby lub rbenv. I że te rzeczy nie są inicjowane, jak to jest, gdy jesteś SSH w pudełku, z powodu nielogicznej, nieinteraktywnej sesji, której używa Capistrano.

Rozwiązaniem jest użycie klejnotu capistrano-{rvm,chruby,rbenv}, który pasuje do Twojego środowiska, jak udokumentowano w Capfile.

Jeśli nie używasz jednego z tych menedżerów wersji, spróbuj tego:

ssh [email protected] 'which bundler' 

Prawdopodobnie widać żadnego wyjścia (więcej o tym, dlaczego w linku powyżej), że rozwiązania, a Capistrano zadziała.

0

W systemie brakuje pliku wykonywalnego o nazwie bundle lub jego PATH nie jest znana powłoce.

Sprawdź poniżej testu:

systemu

można znaleźć perl wykonywalny:

# /usr/bin/env perl 
^C << I did CTRL+C as perl was expecitng me to put some code 

teraz, mój system nie może znaleźć perlyo wykonywalny i wyrzuca błąd:

# /usr/bin/env perlyo 
/usr/bin/env: perlyo: No such file or directory 

błąd powyżej podobnie jak w przypadku /usr/bin/env bundle, która jest:

DEBUG [f15c9f08] /usr/bin/env: 
DEBUG [f15c9f08] bundle 
DEBUG [f15c9f08] : No such file or directory 

sprawdzenie czy system wiedział o bundle uruchamiając poniżej polecenia:

# which bundle 
# whereis bundle 

Jeśli nie można znaleźć z powyższych poleceń, a następnie sprawdzić, czy w ogóle istnieje bundle w systemie, jak poniżej:

# updatedb 
# locate bundle 

Jeśli znajdziesz bundle, to dodaj odpowiednio jego path, aby twoja powłoka mogła go rozpoznać.

Mam nadzieję, że to pomoże.

2

Problem dotyczył nieinteraktywnej powłoki .

końcu musiałem dodać następującą linię do .bashrc:

source ~/.rvm/scripts/rvm 

W przypadku innych dostać się do podobnych kwestii, dodam, że miałem również mapować komendy rake tak będzie działać prawidłowo. Musiałem dodać następującą linię do mojego deploy.rb pliku:

SSHKit.config.command_map[:rake] = "bundle exec rake" 
1

Lepiej użyj capistrano-rbenv gem zarządzać swoim ror env

  1. dodać gem 'capistrano-rbenv', '~> 2.0' to your gemfile
  2. Odkomentuj require 'capistrano/rbenv' w capfile; jeśli capistrano/bundler skomentował Odkomentuj również
  3. ustawić zmienną rbenv_ruby set :rbenv_ruby, '2.0.0-p247' w pliku deploy

następnie wszystko gotowe!

0

udało mi się rozwiązać ten problem przez dodanie następującego kodu do ~/.bashrc:

export RBENV_ROOT="${HOME}/.rbenv" 

if [ -d "${RBENV_ROOT}" ]; then 
    export PATH="${RBENV_ROOT}/bin:${PATH}" 
    eval "$(rbenv init -)" 
fi 
1

jestem trochę późno, aby odpowiedzieć na to pytanie, ale może pomóc niektórym użytkownikom jak ja.

Jeśli używasz rbenv następnie ustawić domyślne środowisko swoimi rbenv dodając poniżej linii w deploy.rb

set :default_env, { path: "~/.rbenv/shims:~/.rbenv/bin:$PATH" }

0

Jak @zpieslak powiedział:

dodać to w ~/.bashrc:

if [ -d "${RBENV_ROOT}" ]; then 
    export PATH="${RBENV_ROOT}/bin:${PATH}" 
    eval "$(rbenv init -)" 
fi 

Przed tej linii:

# If not running interactively, don't do anything 
case $- in 
    *i*) ;; 
     *) return;; 
esac 
Powiązane problemy