Ruby 1.9.1-p234、Passenger 2.2.5、Rails 2.3-stable POST 请求关闭流 [英] Ruby 1.9.1-p234, Passenger 2.2.5, Rails 2.3-stable closed stream on POST request
问题描述
我已经在 Ubuntu 服务器上安装了 Ruby 1.9.1 (p234).我正在尝试部署一个 Rails 应用程序,该应用程序在 Apache 2.2/Passenger 2.2.5 上供应 Rails 2.3-stable.
I've setup Ruby 1.9.1 (p234) on a Ubuntu server. I'm trying to deploy a Rails app which vendors Rails 2.3-stable on Apache 2.2/Passenger 2.2.5.
GET 请求工作正常,POST 请求立即中断并显示以下日志条目:
GET requests work fine, POST requests break immediately with the following log entry:
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 中删除了一行.对我来说不幸的是,检查该文件我发现攻击线已被删除.所以这让我有点无能为力,因为我的问题仍然存在.有什么想法吗?
I've read up, and found this: http://blog.labnotes.org/2009/09/01/ruby-1-9-1-p234passenger-2-2-5-tempfile-rb-fix/ which points to a patch that removes a single line from Ruby 1.9.1-p234's tempfile.rb. Unfortunately for me, inspecting that file I find that the offensive line has already been removed. So that leaves me a bit clueless, as my problem persists. Any ideas?
推荐答案
在乘客 2.2.8 中有一个解决方法,因此不再需要.
休闲吉姆的上述回应对我有用.非常感谢吉姆的帮助.
Casual Jim's response above worked for me. Thanks very much Jim for your help.
我的系统上的差异分别如下.我希望这会有所帮助.
The diffs on my system are, respectively, as follows. I hope this is helpful.
基利安.
*** /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)
这篇关于Ruby 1.9.1-p234、Passenger 2.2.5、Rails 2.3-stable POST 请求关闭流的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!