Ошибка Phusion Passenger: вы активировали стойку 1.2.1, но для вашего Gemfile требуется стойка 1.2.2 - PullRequest
22 голосов
/ 25 апреля 2011

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

Иногда при посещении веб-приложения появляется сообщение об ошибке Phusion Passenger:

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

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

Следуя другим потокам переполнения стека и подобным Dreamhost wiki , я добавил следующее в начало 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

enter image description here

Ответы [ 9 ]

9 голосов
/ 25 апреля 2011

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

8 голосов
/ 11 августа 2012

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

. Создайте файл:

config/setup_load_paths.rb

с содержимым:

require 'rubygems'
require 'bundler/setup'

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

5 голосов
/ 18 августа 2011

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

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

    [wasp] $ список драгоценных камней | grep rack

    rack (1.2.1, 1.1.0, 1.0.1, 1.0.0)

  4. touch tmp / restart.txt

  5. :) happy
5 голосов
/ 06 июля 2011

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

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/

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

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

Кажется, это сработало.Надеюсь, это поможет кому-нибудь еще, оторвать себе волосы.

3 голосов
/ 16 октября 2011

Я решил это на Dreamhost:

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

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

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

bundle install

установкой драгоценных камней в поставщике / комплекте

bundle install --deployment

перезапуск:

touch tmp/restart.txt
2 голосов
/ 07 сентября 2011

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

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

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

Попробуйте:

$ gem uninstall --version=1.2.3 rack

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

2 голосов
/ 27 апреля 2011

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

gem install rack

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

1 голос
/ 04 мая 2012

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

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

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

0 голосов
/ 23 июня 2011

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

...