Не удается запустить Unicorn с Ruby 2.0

На моей машине с Ubuntu я могу запустить unicorn на ruby ​​1.9.3, однако он не работает с ruby ​​2.0. Есть идеи, почему?

root@dev:/home/karan# rvm use 1.9
Using /usr/local/rvm/gems/ruby-1.9.3-p429
root@dev:/home/karan# unicorn -v
unicorn v4.6.3
root@dev:/home/karan# rvm use 2.0
Using /usr/local/rvm/gems/ruby-2.0.0-p195
root@dev:/home/karan# unicorn -v
/usr/local/rvm/rubies/ruby-2.0.0-p195/lib/ruby/site_ruby/2.0.0/rubygems/core_ext/kernel_require.rb:45:in `require': cannot load such file -- unicorn/launcher (LoadError)
        from /usr/local/rvm/rubies/ruby-2.0.0-p195/lib/ruby/site_ruby/2.0.0/rubygems/core_ext/kernel_require.rb:45:in `require'
        from /usr/bin/unicorn:3:in `<main>'

person Karan    schedule 12.08.2013    source источник
comment
Вы делали bundle install после перехода на рубиновую версию?   -  person Jason Kim    schedule 12.08.2013
comment
Меня не было в папке rails...   -  person Karan    schedule 12.08.2013
comment
Я думаю проблема в том, что единорог был установлен в 1.9.3 и при попытке использовать его с 2.0.0 ломается. Вам придется переустановить драгоценный камень в 2.0.0, чтобы работать с 2.0.0.   -  person Jason Kim    schedule 12.08.2013
comment
ок, сейчас попробую. У меня ощущение, что ты прав...   -  person Karan    schedule 12.08.2013
comment
а ты был! добавьте его как ответ, и я с радостью отмечу его как принятый! Спасибо! :)   -  person Karan    schedule 12.08.2013


Ответы (2)


Попробуйте переустановить гем с 2.0.0.

Проблема, должно быть, была вызвана тем, что гем был установлен в версии 1.9.3.

person Jason Kim    schedule 12.08.2013

У меня точно такая же проблема, когда я пытаюсь запустить сервер Unicorn.

Starting Unicorn web server unicorn
/usr/local/rvm/rubies/ruby-2.0.0-p353/lib/ruby/site_ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require': cannot load such file -- unicorn/launcher (LoadError)
from /usr/local/rvm/rubies/ruby-2.0.0-p353/lib/ruby/site_ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require' from /usr/bin/unicorn:3:in `<main>'

Тем не менее, Unicorn отлично работает, когда я запускаю его из папки приложения rails, просто используя команду «unicorn».

Я попробовал то, что вы предлагаете, установив драгоценный камень единорога.

gem install 'unicorn'

Но это не меняет результат

Я проверяю, какой драгоценный камень установлен:

which gem 'unicorn'
/usr/local/rvm/rubies/ruby-2.0.0-p353/bin/gem
/usr/local/rvm/gems/ruby-2.0.0-p353/bin/unicorn

Я запускаю unicorn из скрипта etc/init.d, который вы можете увидеть здесь:

http://pastebin.com/qvwdmRJ2

и здесь для конфигурации по умолчанию:

http://pastebin.com/84FBQjMp

Кажется, есть проблема с PATH файла конфигурации по умолчанию:

PATH=/usr/local/rvm/rubies/ruby-2.0.0-p353/bin:/home/unicorn/.rvm/bin:/usr/local/sbin:/usr/bin:/bin:/sbin:$

Потому что, поскольку я обновил его новой установленной версией, я получаю сообщение об ошибке, показанное вверху. Если я удалю его, Unicorn «видимо запустится», но журнал показывает сумасшедшую активность, а nginx показывает пустой экран.

Я пытаюсь найти решение и поделюсь им здесь, как только найду.

Спасибо за вашу помощь

* ОБНОВЛЕНИЕ *

ОК, я нашел проблемы:

1) для скрипта /etc/init.d:

Вам нужно создать оболочку для работы Unicorn в сценарии типа init.d:

обертка rvm 2.0.0 ruby-2.0.0 единорог

затем замените строку

DAEMON=/usr/бен/единорог

с этим:

DAEMON=/usr/local/rvm/bin/ruby-2.0.0_unicorn

А теперь команда

запуск сервисного единорога

Подробнее об оболочке rvm здесь: https://rvm.io/integration/init-d

2) У меня также была другая проблема, которую было трудно определить в журнале:

Я не создал файл config/environments/staging.rb

person idejuan    schedule 01.12.2013