Ruby 1.9.1-p234, Passenger 2.2.5, flux fermé stable Rails 2.3 sur demande POST
-
06-07-2019 - |
Question
J'ai installé Ruby 1.9.1 (p234) sur un serveur Ubuntu. J'essaie de déployer une application Rails dont les éditeurs Rails 2.3-stable sur Apache 2.2 / Passenger 2.2.5 sont stables.
Les requêtes GET fonctionnent correctement, les requêtes POST sont immédiatement interrompues avec l'entrée de journal suivante:
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:in
read'
/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:in
call'
/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:in
call'
/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:in
block 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:in
call'
/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:in
process_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:in
start_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:in
safe_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 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 fichier tempfile.rb de Ruby 1.9.1-p234. Malheureusement pour moi, en inspectant ce fichier, je constate que la ligne offensive a déjà été supprimée. Cela me laisse donc un peu désemparé, alors que mon problème persiste. Des idées?
La solution
Il existe une solution de contournement dans la version 2.2.8 du passager. Elle n'est donc plus nécessaire.
Casual La réponse de Jim ci-dessus a fonctionné pour moi. Merci beaucoup Jim pour votre aide.
Les différences sur mon système sont, respectivement, les suivantes. J'espère que cela vous sera 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)
Autres conseils
Je devais faire ce qui suit pour que cela fonctionne
gems / passagers-2.2.5 / lib / phusion_passenger / utils.rb ajoutez require 'stringio' à ce fichier à la ligne 34
ouvrir lib / ruby ??/ 1.9.1 / tempfile.rb commentez la ligne 140
Et cela fonctionne à merveille.
Hé Damien. J'ai eu le même problème et bien que je n'aie pas de réponse / lien exact pour vous, je devais installer un patch rack et pas tempfile. J'espère que cela aide
Le correctif occasionnel de Jim a fonctionné pour moi, merci, ce problème me rendait fou.
Je devais aussi appliquer un correctif à Actionview (correctif de hector gomez à https://rails.lighthouseapp.com/projects/8994/tickets/2188-i18n-fails-with-multibyte-strings-in-ruby-19 -similar-to-2038 ) pour faire fonctionner rails et ruby ??1.9.1.
Lorsque ce correctif est appliqué, je ne peux pas redémarrer le module Passenger plus de quelques fois à l’aide de 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 une fuite Tempfiles