Ruby 1.9.1-p234,Passenger 2.2.5,Rails 2.3-POST封闭流在POST请求

我在Ubuntu服务器上设置了Ruby 1.9.1(p234)。 我正在尝试部署一个Rails应用程序,它在Apache 2.2 / Passenger 2.2.5上提供Rails 2.3-stable。

GET请求正常工作,POST请求立即中断以下日志条目:

 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' 

…然后还有一些。

我已经读完了,发现了这个: http : //blog.labnotes.org/2009/09/01/ruby-1-9-1-p234passenger-2-2-5-tempfile-rb-fix/从Ruby 1.9.1-p234的tempfile.rb中删除一行的补丁。 对我来说不幸的是,检查该文件我发现攻击线已被删除。 因为我的问题仍然存在,所以这让我有点无能为力。 有任何想法吗?

乘客2.2.8有一个解决方法,所以不再需要这个。

Jim Jim的回应对我有用。 非常感谢吉姆的帮助。

我系统上的差异分别如下。 我希望这是有帮助的。

基利安。

 *** /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) 

我必须做以下工作才能使它工作

gems / passenger-2.2.5 / lib / phusion_passenger / utils.rb在第34行将’stringio’添加到该文件

打开lib / ruby​​ / 1.9.1 / tempfile.rb注释掉第140行

它就像一个魅力。

嘿达明。 我有同样的问题,虽然我没有从内存得到一个确切的答案/链接我不得不补丁机架而不是临时文件。 我希望这有帮助

休闲吉姆的修复对我有用,谢谢,这个问题让我疯了。

我还必须修改动作视图(按照https://rails.lighthouseapp.com/projects/8994/tickets/2188-i18n-fails-with-multibyte-strings-in-ruby-19-similar-to-上的 hector gomez补丁2038 )获得rails和ruby 1.9.1工作。

应用此修复程序时,我无法使用tmp / restart.txt方法多次重新启动Passenger模块。 之后,请求被接受但从未提供。 我怀疑补丁可能会泄漏临时文件