2009-10-26 5 views
7

auf POST-Anfrage geschlossen Ich habe Setup Ruby-1.9.1 (P234) auf einem Ubuntu-Server. Ich versuche, eine Rails-App zu implementieren, welche Anbieter Rails 2.3-stabil auf Apache 2.2/Passenger 2.2.5.Rubin 1.9.1-P234, Passagier 2.2.5, Rails 2.3 stabiler Strom

GET-Anforderungen gut funktionieren, brechen POST-Anfragen sofort mit dem Eintrag folgenden Protokolls:

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'

... und dann einige.

Ich habe gelesen und gefunden: http://blog.labnotes.org/2009/09/01/ruby-1-9-1-p234passenger-2-2-5-tempfile-rb-fix/, die auf einen Patch zeigt, der eine einzelne Zeile aus Ruby 1.9.1-p234 Tempfile.rb entfernt. Leider habe ich bei der Überprüfung dieser Datei festgestellt, dass die Angriffslinie bereits entfernt wurde. Das macht mich ein bisschen ratlos, da mein Problem weiterhin besteht. Irgendwelche Ideen?

+1

in neuestem Passagiere fixierte, keine hässlichen Hacks mehr benötigten –

Antwort

5

Es gibt eine Abhilfe in Passagier 2.2.8 so ist dies nicht mehr erforderlich.

Gelegenheits Jims Antwort oben für mich gearbeitet. Vielen Dank Jim für deine Hilfe.

Die diffs auf meinem System sind jeweils wie folgt. Ich hoffe, das ist hilfreich.

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, vielen Dank für das Posten! Ich habe diese magische "Zeile 140" mit einer anderen Tempdatei behoben (hier beschrieben: http://blog.labnotes.org/2009/09/01/ruby-1-9-1-p234passenger-2-2-5) -tempfile-rb-fix /) und versucht, das falsche Ding zu beheben. Es funktioniert jetzt, vielen Dank! – Christian

+0

Funktioniert das jetzt mit dem neuesten Passagier? –

0

Hey Damien. Ich hatte das gleiche Problem und während ich keine genaue Antwort/Link für Sie aus dem Speicher habe, musste ich Rack und nicht Teffile Patch. Ich hoffe, das

+0

Genau wie haben Sie Patch-Rack? Ich habe bemerkt, dass Passenger-Anbieter eine Pre-1.0.0-Version von Rack haben. Ich habe versucht, die vendored Version durch Rack 1.0.1 zu ersetzen, bekomme aber immer den gleichen Fehler. – Christian

2

hilft ich folgendes zu tun hatte, um es

Edelsteine ​​/ Passagier-2.2.5/lib/phusion_passenger/utils.rb Add require 'StringIO' arbeiten zu machen, um diese Datei auf der Leitung 34

offen lib/ruby ​​/ 1.9.1/tempfile.rb Kommentar aus der Leitung 140

Und es wirkt wie ein Zauber.

+0

Danke für das Chippen. Aber ich komme immer noch nicht weiter. Würde es dir etwas ausmachen, deine Tempdatei zu posten? Ich kann nicht verstehen, wie sich meine temporäre Datei von anderen unterscheidet, die die gleiche Version von Ruby verwenden. – Christian

+0

hat perfekt funktioniert, danke –

0

Wenn Sie diesen Fix angewendet, kann ich nicht das Passagiermodul mehr als ein paar Mal starten Sie den tmp/restart.txt Methode. Danach werden Anfragen angenommen, aber nie bedient. Ich vermute, dass das Pflaster sein kann undicht tempfiles