Проблемы с Unicorn 3.3.1 и Rack 1.1.0?

Я обновляю Ruby Enterprise Edition 1.8.6 до последней версии 1.8.7 с Unicorn, чтобы упростить обновление до Rails 2.3.10, и столкнулся с некоторыми проблемами. Должен ли я удалить старые версии этих драгоценных камней?

Вот сообщения журнала:

Я обновляю Ruby Enterprise Edition 1.8.6 до последней версии 1.8.7 с Unicorn, чтобы упростить обновление до Rails 2.3.10, и столкнулся с некоторыми проблемами. Должен ли я удалить старые версии этих драгоценных камней?

I, [2011-02-02T22:06:16.328076 #30672]  INFO -- : listening on addr=0.0.0.0:8080 fd=3
I, [2011-02-02T22:06:16.333137 #30672]  INFO -- : Refreshing Gem list
/srv/ree/bin/unicorn_rails must be run inside RAILS_ROOT: #<Gem::LoadError: can't activate rack (~> 1.1.0, runtime) for ["actionpack-2.3.10", "rails-2.3.10"], already activated rack-1.2.1 for ["unicorn-3.3.1"]>
I, [2011-02-02T22:07:12.259436 #30701]  INFO -- : listening on addr=0.0.0.0:8080 fd=3
I, [2011-02-02T22:07:12.259952 #30701]  INFO -- : Refreshing Gem list
/srv/ree/bin/unicorn_rails must be run inside RAILS_ROOT: #<Gem::LoadError: can't activate rack (~> 1.1.0, runtime) for ["actionpack-2.3.10", "rails-2.3.10"], already activated rack-1.2.1 for ["unicorn-3.3.1"]>
I, [2011-02-02T22:09:27.787177 #30772]  INFO -- : listening on addr=0.0.0.0:8080 fd=3
I, [2011-02-02T22:09:27.787691 #30772]  INFO -- : Refreshing Gem list
/srv/ree/bin/unicorn_rails must be run inside RAILS_ROOT: #<Gem::LoadError: can't activate rack (~> 1.1.0, runtime) for ["actionpack-2.3.10", "rails-2.3.10"], already activated rack-1.2.1 for ["unicorn-3.3.1"]>
I, [2011-02-02T22:10:44.175407 #30846]  INFO -- : listening on addr=0.0.0.0:8080 fd=3
I, [2011-02-02T22:10:44.175928 #30846]  INFO -- : Refreshing Gem list
/srv/ree/bin/unicorn_rails must be run inside RAILS_ROOT: #<Gem::LoadError: can't activate rack (~> 1.1.0, runtime) for ["actionpack-2.3.10", "rails-2.3.10"], already activated rack-1.2.1 for ["unicorn-3.3.1"]>

2 ответа

Я тоже столкнулся с этой проблемой. Мы использовали Bundler, и это, похоже, не помогло. Некий драгоценный камень хотел использовать Rack 1.1.0, но у единорога его не было. Я не думаю, что rvm с наборами гемблов поможет, потому что два разных гема требуют двух разных версий стоек.

В конечном итоге я получил работающий сервер:

Rails 2.3.10
Ruby Enterprise Edition 1.8.7
Bundler 1.0.10
Unicorn 3.1.0
Rack 1.1.0

Вы должны удалить Rack 1.2.1. Я также использую unicorn_rails который оборачивает мое приложение рельсов в стойку. Я не уверен, что это необходимо, но я не смог правильно настроить маршруты моих рельсов с помощью приложения для конкретной стойки (стрекоза).

Кроме того, вам нужно запустить эту команду из корня вашего каталога rails (если вы не указали рабочий_каталог в конфигурации). Я рекомендую использовать руководство Брэндона Тилли по обслуживанию приложений Rails с RVM, Nginx и Unicorn, хотя я не смог заставить работать корректно. Я закончил тем, что создал свой собственный скрипт /etc/init.d/unicorn_test_app, который в основном просто запускается:

rvm_path=/usr/local/rvm \
/usr/local/bin/rvm-shell "ree-1.8.7-2011.03@test_app_rails2" -c \
"/usr/local/rvm/gems/ree-1.8.7-2011.03@test_app_rails2/bin/unicorn_rails \
-D -E production -c /var/www/test_app/config/unicorn.rb"

а затем убивает процесс с конкретными сигналами. Очень приятно, когда вы все это заработаете, потому что вы можете иметь нулевое время развертывания (кроме миграций).

Единственное, что мне не нравится в моем сценарии: это специфический для gemset.

Я вижу три способа решения проблемы:

Другие вопросы по тегам