2009-10-26 1 views
7

J'ai installé Ruby 1.9.1 (P234) sur un serveur Ubuntu. J'essaie de déployer une application Rails qui vend Rails 2.3-stable sur Apache 2.2/Passenger 2.2.5.Ruby 1.9.1-P234, passagers 2.2.5, Rails flux fermé 2.3 stable sur demande POST

requêtes GET fonctionnent très bien, les requêtes POST rompent immédiatement avec l'entrée du journal suivant:

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'

... et puis certains. J'ai lu, et j'ai trouvé ceci: http://blog.labnotes.org/2009/09/01/ruby-1-9-1-p234passenger-2-2-5-tempfile-rb-fix/ qui pointe vers un correctif qui supprime une seule ligne du tempfile.rb de Ruby 1.9.1-p234. Malheureusement pour moi, inspectant ce fichier, je trouve que la ligne offensive a déjà été supprimée. Cela me laisse un peu perdu, car mon problème persiste. Des idées?

+1

fixe dans le dernier passager, hacks laids ne sont plus nécessaires –

Répondre

5

Il existe une solution à passagers 2.2.8 donc ce n'est plus nécessaire.

réponse Occasionnels Jim ci-dessus a fonctionné pour moi. Merci beaucoup Jim pour votre aide.

Les diffs sur mon système sont respectivement comme suit. J'espère que ceci est utile.

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, merci beaucoup pour l'affichage de cela! J'ai confondu cette magie "ligne 140" avec un autre correctif de tempfile (décrit ici: http://blog.labnotes.org/2009/09/01/ruby-1-9-1-p234passenger-2-2-5 -tempfile-rb-fix /) et a essayé de réparer la mauvaise chose. Cela fonctionne maintenant, merci beaucoup! – Christian

+0

Est-ce que cela fonctionne maintenant avec le dernier passager? –

0

Salut Damien. J'ai eu le même problème et pendant que je n'ai pas eu une réponse exacte/lien pour vous de la mémoire je devais patcher le support et pas le le tempfile. J'espère que cela aide

+0

Comment avez-vous patcher Rack? J'ai remarqué que les vendeurs de passagers une version antérieure à la version 1.0.0 de Rack. J'ai essayé de remplacer la version vendue avec Rack 1.0.1, mais continuez à obtenir la même erreur. – Christian

2

je devais faire ce qui suit pour le faire fonctionner

gemmes/passager-2.2.5/lib/phusion_passenger/utils.rb ajouter require « StringIO » à ce fichier sur la ligne 34

ouvert lib/ruby ​​/ 1.9.1/tempfile.rb commentaire sur la ligne 140

Et cela fonctionne comme un charme.

+0

Merci d'avoir choisi. Cependant, je n'arrive toujours à rien. Cela vous dérangerait-il de poster votre fichier temporaire? Je ne peux pas comprendre comment mon tempfile est différent des autres personnes utilisant la même version de Ruby. – Christian

+0

travaillé parfait, merci –

0

Lors de l'application de ce correctif, je ne peux pas redémarrer le module de passagers plus d'un peu de temps en utilisant la méthode tmp/restart.txt. Après cela, les demandes sont acceptées mais jamais servies. Je soupçonne que le correctif peut être des fichiers temporaires fuite

Questions connexes