2013-07-01 3 views
4

Я развертываю VPS, используя capistrano, на основе руководства в RailsCasts. http://railscasts.com/episodes/335-deploying-to-a-vps?view=asciicastОтладка Capistrano

Это провал на развёртывания: холодный команду, с конфликтом с Ruby. На самом деле я не вижу, в чем проблема, так как когда я накладываю оболочку на одного пользователя, версия Ruby выглядит правильно.

$ cap shell 
cap> which ruby 
[establishing connection(s) to 192.xxx.xxx.xxx] 
** [out :: 192.xxx.xxx.xxx] /home/deployer/.rbenv/shims/ruby 
cap> ruby -v 
** [out :: 192.xxx.xxx.xxx ruby 1.9.3p327 (2012-11-10 revision 37606) [x86_64-linux] 

Это ошибка:

command finished in 655ms 
* 2013-07-01 16:40:39 executing `bundle:install' 
* executing "cd /home/deployer/rails/assay/releases/20130701144038 && bundle install -- gemfile /home/deployer/rails/assay/releases/20130701144038/Gemfile --path /home/deployer/rails/assay/shared/bundle --deployment --quiet --without development test" 
servers: ["192.xxx.xxx.xxx"] 
[192.xxx.xxx.xxx] executing command 
** [out :: 192.xxx.xxx.xxx] rbenv: version `1.9.3' is not installed 
command finished in 662ms 
*** [deploy:update_code] rolling back 

Мой вопрос: как я могу отладить это? Когда я прочитал файл deploy.rb, я не вижу, где он даже ссылается на версию Ruby. Довольно разочаровываю, я готов к ftp репо, что не идеально.

+0

похоже, что вы используете rbenv для установки ruby ​​- вы можете проверить это сообщение: http://henriksjokvist.net/archive/2012/2/deploying-with-rbenv-and-capistrano/ - set: default_environment, { 'PATH' => "$ HOME/.rbenv/shims: $ HOME/.rbenv/bin: $ PATH" } ' – house9

ответ

2

Я только что был подобный вопрос, причина была .ruby-version файла, указывая на 1.9.3 (файл был сгенерирован рельсами-композитор), в то время как было установлен 1.9.3-p392 через rbenv на удаленной машине.

+0

На самом деле я также использовал Rails Composer. – ardochhigh

8

Ну, я, наконец, дошел до сути проблемы - несоответствие между версиями Ruby от Capistrano и тем, что было на самом деле на сервере.

Для отладки Capistrano запустить его так:

cap deploy:cold -d 

Это вы можете пройти через команду и получить доступ к временной директории на удаленном сервере, прежде чем они будут удалены.

+4

Это не более верно для Capistrano 3:' OptionParser :: AmbiguousOption: неоднозначная опция : -d' –

+0

для Capistrano3 мы можем использовать 'cap staging deploy -t' вместо –

Смежные вопросы