Подтвердить что ты не робот

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

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

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

Вы уже активировали стойку 1.2.1, но для вашего Gemfile требуется стойка 1.2.2. Рассмотрите возможность использования bundle 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

4b9b3361

Ответ 1

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

Ответ 2

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

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

config/setup_load_paths.rb

с контентом:

require 'rubygems'
require 'bundler/setup'

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

Ответ 3

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

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

Кажется, что сработало. Надеюсь, это полезно для всех, кто разрывает их волосы.

Ответ 4

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

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

    [wasp] $gem list | grep rack

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

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

  • :) happy

Ответ 5

Я решил этот путь на 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

Ответ 6

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

gem install rack

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

Ответ 7

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

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

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

Try:

$ gem uninstall --version=1.2.3 rack

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

Ответ 8

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

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

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