ruby-on-rails - instalar - install gem windows
Pasar por alto el error de la versiĆ³n del rack con Rails 2.3.5 (9)
Actualmente estoy en Dreamhost intentando ejecutar una aplicación Rails 2.3.5.
Aquí está la situación, los servidores de Dreamhost tienen instalado Rails 2.2.2. Por supuesto, no puedo actualizar la versión de los carriles de un host compartido, así que congelé mis Rails en el proveedor. Rails 2.3.5 requiere la gema rack v1.0.1. Dreamhost usa la gema rack v1.0.0. Entonces cuando trato de definir:
config.gem "rack", :version => "1.0.1"
Yo obtengo:
can''t activate rack (~> 1.0.1, runtime) for [], already activated rack-1.0.0 for []
Entonces, lo que realmente necesito hacer es omitir la solicitud de mi aplicación para usar 1.0.1, y usar Dreamhost 1.0.0. ¿Alguien sabe cómo configurar esto? ¿Es posible? Gracias por la ayuda.
Casi siempre deseará descomprimir las gemas de las que depende su aplicación en la carpeta del vendor
. Puedes hacer eso con este comando de rake
:
rake gems:unpack:dependencies
Esto creará un vendor/gems
carpetas vendor/gems
en la carpeta raíz de la aplicación y descomprimirá todas las gemas que haya declarado con el comando config.gem
.
Esto no solo resolverá su problema con las versiones de rack
no coinciden, sino que también se asegurará de que esté utilizando las mismas versiones exactas de gemas en producción que utiliza en desarrollo, lo que puede evitar muchos dolores de cabeza potenciales en el futuro.
Me encontré con el mismo problema cuando intenté actualizar a 2.3.5.
Me pregunto en qué servidor está usted que aún ejecuta Rails 2.2.2. Creí que Dreamhost había movido a todos a 2.3.4 por ahora. Me quejé con ellos hace 3 meses y actualizaron Passenger en mi servidor el día siguiente para poder instalar la versión actual de Rails. Así que te recomendaría que presentaras un ticket de soporte si Rails 2.3.5 es vital para tu aplicación. Pero no hubo muchos cambios entre 2.3.4 y 2.3.5, así que es probable que tu aplicación funcione igual de bien en 2.3.4. ¿Intentó ejecutarlo en el vendored 2.3.4?
No se trata de una gema que falta, se trata de una gema que se requiere dos veces con versiones que no coinciden. Rake gems: desempaquetar: las dependencias no lo arreglan (lo intenté).
Sospecho que es un problema con la versión Passenger de Dreamhost nuevamente. Mi servidor (buenosaires) tiene Passenger 2.2.5. La última versión de Passenger es 2.2.7.
rake gems:unpack:dependencies
no le permite desempaquetar el rake en su carpeta vendor / gems.
Para el problema de Dreamhost, debes hacer lo que dijo Matt. Congele los rieles a 2.3.4.
rake rails:freeze:gems VERSION=2.3.4
Dreamhost usa una versión anterior de Passenger que precarga el rack 1.0.0. No puede cargar el rack 1.0.1 una vez que el rack 1.0.0 ha sido precargado. Por lo tanto, la última versión de rieles posible para DH es Rails 2.3.4 y Rack 1.0.0.
Dreamhost está actualizando Rack and Rails: http://www.dreamhoststatus.com/2009/12/21/ruby-gem-updates/
Supongo que eso lo resuelve.
Creo que en este momento lo mejor sería descongelar todo y usar lo que está en el dreamhost. Actualmente tienen rieles 2.3.4 y si puedes esperar uno o dos días, Dreamhost está actualizando gemas de rieles a 2.3.5 (debería haberse actualizado ya ayer el 21 de diciembre, pero por alguna razón no explicaron que son todavía en 2.3.4).
FWIW, puedo confirmar que congelar la gema no resuelve el problema; de hecho, donde antes de mi despliegue estaba explotando (usando DH''s Rack 0.3.0, de alguna manera!), ahora mi spin-up explota con el mismo error visto anteriormente. Tal vez es finalmente el momento de mover mi aplicación de juguete / prueba de concepto al alojamiento ''real'' si quiero hacer algún trabajo.
ACTUALIZACIÓN: Mi servidor se actualizó a Rack 1.0.1 el 24 de diciembre de 2009, resolviendo el problema para mí. Si todavía tiene problemas en su cuenta, le recomiendo el soporte de mensajes; fueron bastante receptivos en mi caso (con correos electrónicos, no con acciones, pero por el precio realmente no puedes tenerlo todo).
Dreamhost ha abordado este problema en su wiki de soporte ahora.
http://wiki.dreamhost.com/Ruby_on_Rails#Rails_2.3.5_-_Rack_1.0_already_activated_.28fix.29
Desde esa página:
Al usar Rails 2.3.5, el Pasajero recibirá un mensaje diciendo que Rack 1.0.1 no se puede cargar porque Rack 1.0 ya está activado.
Una forma de resolver esto es congelando Rails y descomprimir la gema Rack en el proveedor / gems / rack-1.0.1
Una vez que Rails y Rack están en el proveedor / rails y vendor / gems / rack-1.0.1, debe modificar action_controller en el archivo: vendor / rails / actionpack / lib / action_controller.rb
En la línea, los números 34 y 35 deben estar comentados y agregue lo siguiente para cargar el bastidor desde el proveedor / gemas.
load "#{RAILS_ROOT}/vendor/gems/rack-1.0.1/lib/rack.rb"
El resultado final debería verse más o menos así:
#gem ''rack'', ''~> 1.0.1'' #require ''rack'' load "#{RAILS_ROOT}/vendor/gems/rack-1.0.1/lib/rack.rb"
El verdadero problema es que Passenger ya carga Rack 1.0 y creo que Passenger debe cargar 1.0.1 para que este truco desaparezca.
No funcionó para mí una simple actualización de gem del rack porque parece que Rails 2.3.5 quiere Rack 1.0.1 específicamente. Entonces, cuando hice un rack de actualización de gemas -v = 1.0.1, Rails 2.3.5 comenzó a funcionar.
Aparentemente todo esto con Rails que quiere rack 1.0.1 es un pequeño error de requisito de dependencia en actionpack que se puede resolver con bastante facilidad.
Para mí fue suficiente editar vendor/rails/actionpack/lib/action_controller.rb
en la línea 34 desde gem ''rack'', ''~> 1.0.1''
a gem ''rack'', ''~> 1.0''
y el problema desapareció .