ruby-on-rails ruby rubygems passenger dreamhost

ruby on rails - Error de Phusion Passenger: ha activado el rack 1.2.1, pero su Gemfile requiere el rack 1.2.2



dreamhost phpmyadmin (9)

Acabo de encontrar este problema en Dreamhost. El problema es que el servidor Dreamhost tiene el rack 1.2.1 instalado y su Gemfile está cargando 1.2.2. Encontré que si acabo de instalar rack:

gem install rack

Luego, la última versión de rack (1.2.2 a partir de ahora) se instalará en la carpeta de gemas de su casa (~ / .gems). Cuando el pasajero arranque, usará 1.2.2.

Estoy intentando ejecutar una aplicación Ruby on Rails en un servidor compartido de Dreamhost. Todo está bien hasta ahora, excepto un error extraño que no he podido desentrañar.

A veces, cuando visito la aplicación web, me aparece un error de Phusion Passenger que dice:

Ya ha activado el bastidor 1.2.1, pero su Gemfile requiere el bastidor 1.2.2. Considere el uso de exec paquete.

Sin embargo, cuando acabo de actualizar la página parece funcionar, no hay más mensajes de error de Phusion Passenger.

Siguiendo otros hilos de desbordamiento de pila y un wiki similar de Dreamhost , agregué lo siguiente en la parte superior del archivo 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


Después de largos períodos de inactividad, he estado recibiendo un error similar para un par de aplicaciones Sinatra en un VPS de DreamHost:

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

Al igual que se describe en @ aren55555, si simplemente actualiza la página, el error desaparece. Aquí hay algo que descubrí sobre la configuración del servidor:

[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/

Supongo que lo que estaba ocurriendo es que, después de que Passenger se "despierta", por alguna razón está mirando primero (o quizás solo ) a las gemas en el nivel del sistema, seleccionando Rack 1.2.1 como la última versión. Mi solución hacky a corto plazo fue simplemente instalar Rack 1.3.0 allí:

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

Parece que ha funcionado. Espero que esto sea útil para cualquier otra persona que se rasgue el cabello.


Esto funciona en Rails 3.0.x & Passenger 3.0.15

crear un archivo:

config/setup_load_paths.rb

con contenido:

require ''rubygems'' require ''bundler/setup''

El pasajero cargará la gema de rack especificada en su Gemfile.lock


Luché con este problema durante horas antes de finalmente renunciar al Pasajero. Cualquier nueva versión de Rails utilizará un Rack más reciente que el que requiere el Pasajero de Dreamhost.

Sin embargo, no es necesario que Passenger inicie la aplicación. Dreamhost proporciona algunas instrucciones bastante fáciles (y útiles) sobre cómo iniciar la aplicación usando FastCGI, y no tendrá que corromper su Gemfile en el proceso:

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


Mi problema fue similar con Apache: "Ya ha activado el rack 1.2.3, pero su Gemfile requiere el rack 1.2.2. Considere usar el paquete exec".

El problema fue que Passenger instaló el rack 1.2.3 y mi rack APP 1.2.2:

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

Tratar:

$ gem uninstall --version=1.2.3 rack

reinicie el servidor y solucione



Resolví de esta manera en Dreamhost:

Eliminar de Gemfile cualquier línea: gema ''rack'', ....

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

Instala / usa las gemas localmente y regenera el archivo ''Gemfile.lock'' con:

bundle install

instalar gemas en proveedor / paquete

bundle install --deployment

reiniciar:

touch tmp/restart.txt


Tengo el mismo problema: "Ya ha activado el rack 1.2.1, pero su Gemfile requiere el rack 1.2.3"

  1. Añadir a Gemfile: gema ''rack'', ''1.2.1''
  2. actualización del paquete
  3. desinstalar las versiones de rack> 1.2.1

    [wasp] $ gem list | grep rack

    bastidor (1.2.1, 1.1.0, 1.0.1, 1.0.0)

  4. toque tmp / restart.txt

  5. :) feliz

intente reiniciar su servidor después de editarlo en su Gemfile y coloque esto: gem ''rack'', ''1.2.1''