2009-10-26 10 views
7

Configuré Ruby 1.9.1 (p234) en un servidor Ubuntu. Estoy intentando implementar una aplicación de Rails que los proveedores tengan Rails 2.3-stable en Apache 2.2/Passenger 2.2.5.Ruby 1.9.1-p234, Passenger 2.2.5, Rails 2.3-stable stream cerrado en solicitud POST

peticiones GET funcionan bien, las solicitudes POST rompen inmediatamente con la siguiente entrada de registro:

Processing UsersController#new (for 80.203.77.44 at 2009-10-24 20:54:55) [GET] 
    Parameters: {"controller"=>"users", "action"=>"new"} 
Rendering template within layouts/application 
Rendering users/new 
Completed in 23ms (View: 20, DB: 0) | 200 OK [ http://myapp/user/new] 
/!\ FAILSAFE /!\ 2009-10-24 20:55:01 +0200 
    Status: 500 Internal Server Error 
    closed stream 
    /usr/local/lib/ruby/gems/1.9.1/gems/passenger-2.2.5/vendor/rack-1.0.0-git/lib/rack/rewindable_input.rb:86:in make_rewindable' /usr/local/lib/ruby/gems/1.9.1/gems/passenger-2.2.5/vendor/rack-1.0.0-git/lib/rack/rewindable_input.rb:26:inread' 
    /usr/local/lib/ruby/gems/1.9.1/gems/passenger-2.2.5/vendor/rack-1.0.0-git/lib/rack/request.rb:136:in POST' /usr/local/lib/ruby/gems/1.9.1/gems/passenger-2.2.5/vendor/rack-1.0.0-git/lib/rack/methodoverride.rb:15:incall' 
    /var/www/myapp/app/releases/20091021213913/vendor/rails/actionpack/lib/action_controller/params_parser.rb:15:in call' /var/www/myapp/app/releases/20091021213913/vendor/rails/actionpack/lib/action_controller/session/cookie_store.rb:93:incall' 
    /var/www/myapp/app/releases/20091021213913/vendor/rails/actionpack/lib/action_controller/failsafe.rb:26:in call' /usr/local/lib/ruby/gems/1.9.1/gems/passenger-2.2.5/vendor/rack-1.0.0-git/lib/rack/lock.rb:11:inblock in call' 
    :8:in synchronize' /usr/local/lib/ruby/gems/1.9.1/gems/passenger-2.2.5/vendor/rack-1.0.0-git/lib/rack/lock.rb:11:incall' 
    /var/www/myapp/app/releases/20091021213913/vendor/rails/actionpack/lib/action_controller/dispatcher.rb:106:in call' /usr/local/lib/ruby/gems/1.9.1/gems/passenger-2.2.5/lib/phusion_passenger/rack/request_handler.rb:95:inprocess_request' 
    /usr/local/lib/ruby/gems/1.9.1/gems/passenger-2.2.5/lib/phusion_passenger/abstract_request_handler.rb:207:in main_loop' /usr/local/lib/ruby/gems/1.9.1/gems/passenger-2.2.5/lib/phusion_passenger/railz/application_spawner.rb:378:instart_request_handler' 
    /usr/local/lib/ruby/gems/1.9.1/gems/passenger-2.2.5/lib/phusion_passenger/railz/application_spawner.rb:336:in block in handle_spawn_application' /usr/local/lib/ruby/gems/1.9.1/gems/passenger-2.2.5/lib/phusion_passenger/utils.rb:183:insafe_fork' 
    /usr/local/lib/ruby/gems/1.9.1/gems/passenger-2.2.5/lib/phusion_passenger/railz/application_spawner.rb:334:in `handle_spawn_application'

... y algo más.

He leído y encontré esto: http://blog.labnotes.org/2009/09/01/ruby-1-9-1-p234passenger-2-2-5-tempfile-rb-fix/ que apunta a un parche que elimina una sola línea del archivo tempfile.rb de Ruby 1.9.1-p234. Desafortunadamente para mí, al inspeccionar ese archivo, descubrí que la línea ofensiva ya se ha eliminado. Entonces eso me deja un poco despistado, ya que mi problema persiste. ¿Algunas ideas?

+1

arreglado en el último pasajero, ya no se necesitan hacks feos –

Respuesta

5

Hay una solución en el pasajero 2.2.8 por lo que ya no es necesario.

Casual La respuesta de Jim anteriormente me ha funcionado. Muchas gracias Jim por tu ayuda.

Los diffs en mi sistema son, respectivamente, los siguientes. Espero que esto sea útil.

Killian.

*** /usr/local/lib/ruby/gems/1.9.1/gems/passenger-2.2.5/lib/phusion_passenger/utils.rb.orig Tue Nov 3 17:43:30 2009 
--- /usr/local/lib/ruby/gems/1.9.1/gems/passenger-2.2.5/lib/phusion_passenger/utils.rb Tue Nov 3 17:43:46 2009 
*************** 
*** 31,36 **** 
--- 31,37 ---- 
    require 'etc' 
    require 'fcntl' 
    require 'tempfile' 
+ require 'stringio' 
    require 'phusion_passenger/exceptions' 
    if !defined?(RUBY_ENGINE) || RUBY_ENGINE == "ruby" 
    require 'phusion_passenger/native_support' 


*** /usr/local/lib/ruby/1.9.1/tempfile.rb.orig Tue Nov 3 17:44:34 2009 
--- /usr/local/lib/ruby/1.9.1/tempfile.rb Tue Nov 3 17:45:55 2009 
*************** 
*** 137,143 **** 
     # keep this order for thread safeness 
     begin 
     if File.exist?(@tmpname) 
!   closed? or close 
      File.unlink(@tmpname) 
     end 
     @@cleanlist.delete(@tmpname) 
--- 137,143 ---- 
     # keep this order for thread safeness 
     begin 
     if File.exist?(@tmpname) 
!   # closed? or close 
      File.unlink(@tmpname) 
     end 
     @@cleanlist.delete(@tmpname) 
+0

Wow, muchas gracias por publicar eso! He estado confundiendo esa "línea 140" mágica con otra corrección temporal (descrita aquí: http://blog.labnotes.org/2009/09/01/ruby-1-9-1-p234passenger-2-2-5 -tempfile-rb-fix /) y trató de arreglar lo incorrecto. ¡Funciona ahora, muchas gracias! – Christian

+0

¿Esto ahora funciona con el último pasajero? –

0

Hey Damien. Tuve el mismo problema y, aunque no recibí una respuesta/enlace exacto de la memoria, tuve que parchear el estante y no el archivo de memoria. Espero que esto ayude

+0

Exactamente, ¿cómo parchear Rack? Noté que los vendedores de Pasajeros tenían una versión anterior a la 1.0.0 de Rack. Traté de reemplazar la versión vendida con Rack 1.0.1, pero sigo recibiendo el mismo error. – Christian

2

que tenía que hacer lo siguiente para que funcione

gemas/pasajero-2.2.5/lib/phusion_passenger/utils.rb complemento requieren 'StringIO' a ese archivo en la línea 34

abierta lib/ruby ​​/ 1.9.1/tempfile.rb comente la línea 140

Y funciona como un encanto.

+0

Gracias por saltar. Sin embargo, todavía no estoy llegando a ninguna parte. ¿Te importaría publicar tu archivo temporal? No puedo entender cómo mi archivo temporal se ve diferente de otras personas que usan la misma versión de Ruby. – Christian

+0

funcionó perfecto, gracias –

0

Al aplicar esta solución, no puedo reiniciar el módulo Passenger más de unas pocas veces utilizando el método tmp/restart.txt. Después de eso, las solicitudes se aceptan pero nunca se sirven. Sospecho que el parche puede estar perdiendo archivos temporales

Cuestiones relacionadas