Ошибка Phusion Passenger: вы активировали стойку 1.2.1, но для вашего Gemfile требуется стойка 1.2.2.

Я пытаюсь запустить приложение Ruby on Rails на общем сервере Dreamhost. Пока все хорошо, за исключением одной странной ошибки, которую я не смог разгадать.

Иногда, когда я захожу в веб-приложение, я получаю сообщение об ошибке Phusion Passenger:

Вы уже активировали стойку 1.2.1, но для вашего Gemfile требуется стойка 1.2.2. Рассмотрите возможность использования пакета exec.

Когда я просто обновляю страницу, кажется, что она работает - больше нет сообщений об ошибке Phusion Passenger.

Следуя другим потокам переполнения стека и аналогичной вики Dreamhost , Я добавил в начало файла config/environment.rb следующее:

if ENV['RAILS_ENV'] == 'production'  # don't bother on dev
  ENV['GEM_PATH'] = '/home/myusername/.gems' + ':/usr/lib/ruby/gems/1.8'
end

введите описание изображения здесь


person aren55555    schedule 25.04.2011    source источник
comment
Мой сайт теперь работает безупречно!   -  person aren55555    schedule 19.11.2011


Ответы (9)


попробуйте перезапустить сервер после редактирования в Gemfile и введите это: gem 'rack', '1.2.1'

person Surya    schedule 25.04.2011
comment
Когда я выполняю bundle install на производственном сервере, я получаю следующее: You have requested: rack = 1.2.1 The bundle currently has rack locked at 1.2.2. Try running 'bundle update rack' Итак, я выполнил команду bundle update rack, я думаю, все обновилось успешно. Проблема с этой ошибкой в ​​том, что для ее воспроизведения требуется некоторое время (я знаю, что это странно) - я вернусь к вам, чтобы проверить, является ли это решением или нет. - person aren55555; 26.04.2011
comment
удалите Femfile.lock, а затем попробуйте bundle install. Причина Gemfile.lock содержит информацию о геме и его версии, которая в настоящее время используется для вашего приложения rails, которая сначала создается вашей командой bundle. - person Surya; 26.04.2011

Это работает в Rails 3.0.x и Passenger 3.0.15.

создать файл:

config/setup_load_paths.rb

с содержанием:

require 'rubygems'
require 'bundler/setup'

Затем Passenger загрузит драгоценный камень стойки, указанный в вашем Gemfile.lock.

person t_itchy    schedule 10.08.2012
comment
+1 Я считаю, что это правильный ответ (см. документ для пассажиров) . Я сам понял это, прочитав lib/phusion_passenger/utils.rb, но позже забыл, когда снова столкнулся с проблемой. Спасибо за напоминание. Этот метод особенно эффективен, когда вы вынуждены запускать приложения в разных версиях стойки. - person Kelvin; 03.03.2013

После долгих периодов бездействия я получал аналогичную ошибку для пары приложений Sinatra на DreamHost VPS:

Phusion Passenger Error: You have activated rack 1.2.1, but your Gemfile requires rack 1.3.0.

Как описано в @ aren55555, если вы просто обновите страницу, ошибка исчезнет. Вот кое-что, что я обнаружил о конфигурации сервера:

[psXXXXX]$ gem env
RubyGems Environment:
  - RUBYGEMS VERSION: 1.3.6
  - RUBY VERSION: 1.8.7 (2008-08-11 patchlevel 72) [x86_64-linux]
  - INSTALLATION DIRECTORY: /home/XXXXXXXXX/.gems/
  - RUBY EXECUTABLE: /usr/bin/ruby1.8
  - EXECUTABLE DIRECTORY: /home/XXXXXXXXX/.gems/bin
  - RUBYGEMS PLATFORMS:
    - ruby
    - x86_64-linux
  - GEM PATHS:
     - /home/XXXXXXXXX/.gems/               <-- Rack 1.3.0 Gem was installed here
     - /usr/lib/ruby/gems/1.8               <-- Rack 1.2.1 Gem was installed here
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :benchmark => false
     - :backtrace => false
     - :bulk_threshold => 1000
  - REMOTE SOURCES:
     - http://rubygems.org/

Я предполагаю, что происходило после того, как Passenger "просыпается", по какой-то причине он смотрит сначала (или, возможно, только) на драгоценные камни на системном уровне, выбрав Rack 1.2.1 в качестве последней версии. Моим краткосрочным хакерским решением было просто установить туда Rack 1.3.0:

gem install rack -v 1.3.0 --install-dir /usr/lib/ruby/gems/1.8

Вроде сработало. Надеюсь, это поможет всем, кто рвет на себе волосы.

person Todd Mazierski    schedule 06.07.2011

У меня такая же проблема: «Вы уже активировали стойку 1.2.1, но для вашего Gemfile требуется стойка 1.2.3»

  1. Добавьте в Gemfile: gem 'rack', '1.2.1'
  2. пакетное обновление
  3. удалить версии стойки> 1.2.1

    [wasp] $ gem list | grep rack

    стойка (1.2.1, 1.1.0, 1.0.1, 1.0.0)

  4. коснитесь tmp / restart.txt

  5. :) счастливый
person Jivko Georgiev    schedule 17.08.2011

Я решил так на Dreamhost:

Удалите из Gemfile любую строку: gem 'rack', ....

rm Gemfile.lock
rm -rf .bundle
rm -rf  vendor/bundle

установить / использовать драгоценные камни локально и восстановить файл Gemfile.lock с помощью:

bundle install

установить драгоценные камни в vendor / bundle

bundle install --deployment

начать сначала:

touch tmp/restart.txt
person Sebtm    schedule 16.10.2011

Я только что столкнулся с этой проблемой на Dreamhost. Проблема в том, что на сервере Dreamhost установлена ​​стойка 1.2.1, а ваш Gemfile загружает 1.2.2. Я обнаружил, что если просто установить стойку:

gem install rack

Затем последняя версия стойки (на данный момент 1.2.2) будет установлена ​​в вашу домашнюю папку драгоценных камней (~ / .gems). Когда пассажир запускается, он будет использовать 1.2.2.

person Jason L    schedule 27.04.2011
comment
Я попробую, хотя у @Surya, казалось бы, было рабочее решение. - person aren55555; 27.04.2011
comment
Я попробовал это решение, но через несколько дней все равно получил неправильную ошибку стойки. - person Kevin Lawrence; 21.05.2011

У меня была аналогичная проблема с Apache: «Вы уже активировали стойку 1.2.3, но для вашего Gemfile требуется стойка 1.2.2. Рассмотрите возможность использования пакета exec».

Проблема заключалась в том, что Passenger установил стойку 1.2.3 и мою стойку Rails APP 1.2.2:

$ gem list |grep rack
rack (1.2.2, 1.2.3)

Пытаться:

$ gem uninstall --version=1.2.3 rack

перезапустить сервер и решить

person salidux    schedule 07.09.2011

Я часами боролся с этой проблемой, прежде чем в конце концов отказался от Passenger. Любая новая версия Rails будет использовать более новую стойку, чем требуется для Dreamhost's Passenger.

Однако вам не нужен Passenger для загрузки приложения. Dreamhost предоставляет несколько довольно простых (и рабочих) инструкций о том, как загрузить приложение с помощью FastCGI, и вам не придется в процессе повредить свой Gemfile:

http://wiki.dreamhost.com/Rails_3#Using_FastCGI

person KurtPreston    schedule 04.05.2012

Возможно, стоит это проверить. Кто-то сделал способ заставить отладчик работать с Passenger & Rails 3 - http://duckpunching.com/passenger-mod_rails-for-development-now-with-debugger

person Marc    schedule 23.06.2011