Can't POST using Ruby 1.9.2 -- get Apache error.

I have both ruby-1.8.7-p330 and ruby-1.9.2-p136 installed on my CentOS
server. I'm using Passenger (3.0.2) and Apache 2.2.3.

When using ruby-1.8.7, my app seems to be working fine.

When I change to ruby-1.9.2, GET requests seem to be fine, but POSTs
produce the following Apache error:

(104)Connection reset by peer: ap_content_length_filter:
apr_bucket_read() failed

And the following is in my production log:

Started POST "/login/verify_login" for etc...

TypeError (can't convert nil into Integer):

From Googling, it looks like Apache is expecting Rails to handle the
request differently. I've seen this quote: "This works as designed. It
is the task of the cgi script to swallow the whole request body prior
to sending a response, whether it uses it for some purpose or not."

Ok, so what do I change in Rails to make that happen?

Thanks!

More info: I reproduced this in development mode on my OS X machine,
again using Ruby 1.9.2. I now get a stack trace:

Error during failsafe response: ActionView::Template::Error
  <path>/.rvm/gems/ruby-1.9.2-p136/gems/activesupport-3.0.3/lib/active_support/whiny_nil.rb:48:in
`method_missing'
  <path>/.rvm/gems/ruby-1.9.2-p136/gems/actionpack-3.0.3/lib/action_dispatch/http/parameters.rb:10:in
`parameters'
  <path>/.rvm/gems/ruby-1.9.2-p136/gems/actionpack-3.0.3/lib/action_dispatch/middleware/templates/rescues/diagnostics.erb:3:in
  <path>/.rvm/gems/ruby-1.9.2-p136/gems/actionpack-3.0.3/lib/action_view/template.rb:135:in
`block in render'
  <path>/.rvm/gems/ruby-1.9.2-p136/gems/activesupport-3.0.3/lib/active_support/notifications.rb:54:in
`instrument'
  <path>/.rvm/gems/ruby-1.9.2-p136/gems/actionpack-3.0.3/lib/action_view/template.rb:127:in
`render'
  <path>/.rvm/gems/ruby-1.9.2-p136/gems/actionpack-3.0.3/lib/action_view/render/rendering.rb:59:in
`block in _render_template'
  <path>/.rvm/gems/ruby-1.9.2-p136/gems/activesupport-3.0.3/lib/active_support/notifications.rb:52:in
`block in instrument'
  <path>/.rvm/gems/ruby-1.9.2-p136/gems/activesupport-3.0.3/lib/active_support/notifications/instrumenter.rb:21:in
`instrument'
  <path>/.rvm/gems/ruby-1.9.2-p136/gems/activesupport-3.0.3/lib/active_support/notifications.rb:52:in
`instrument'
  <path>/.rvm/gems/ruby-1.9.2-p136/gems/actionpack-3.0.3/lib/action_view/render/rendering.rb:56:in
`_render_template'
  <path>/.rvm/gems/ruby-1.9.2-p136/gems/actionpack-3.0.3/lib/action_view/render/rendering.rb:26:in
`render'
  <path>/.rvm/gems/ruby-1.9.2-p136/gems/actionpack-3.0.3/lib/action_dispatch/middleware/show_exceptions.rb:88:in
`rescue_action_locally'
  <path>/.rvm/gems/ruby-1.9.2-p136/gems/actionpack-3.0.3/lib/action_dispatch/middleware/show_exceptions.rb:68:in
`render_exception'
  <path>/.rvm/gems/ruby-1.9.2-p136/gems/actionpack-3.0.3/lib/action_dispatch/middleware/show_exceptions.rb:59:in
`rescue in call'
  <path>/.rvm/gems/ruby-1.9.2-p136/gems/actionpack-3.0.3/lib/action_dispatch/middleware/show_exceptions.rb:46:in
`call'
  <path>/.rvm/gems/ruby-1.9.2-p136/gems/railties-3.0.3/lib/rails/rack/logger.rb:13:in
`call'
  <path>/.rvm/gems/ruby-1.9.2-p136/gems/rack-1.2.1/lib/rack/runtime.rb:17:in
`call'
  <path>/.rvm/gems/ruby-1.9.2-p136/gems/activesupport-3.0.3/lib/active_support/cache/strategy/local_cache.rb:72:in
`call'
  <path>/.rvm/gems/ruby-1.9.2-p136/gems/rack-1.2.1/lib/rack/lock.rb:11:in
`block in call'
  <internal:prelude>:10:in `synchronize'
  <path>/.rvm/gems/ruby-1.9.2-p136/gems/rack-1.2.1/lib/rack/lock.rb:11:in `call'
  <path>/.rvm/gems/ruby-1.9.2-p136/gems/actionpack-3.0.3/lib/action_dispatch/middleware/static.rb:30:in
`call'
  <path>/.rvm/gems/ruby-1.9.2-p136/gems/railties-3.0.3/lib/rails/application.rb:168:in
`call'
  <path>/.rvm/gems/ruby-1.9.2-p136/gems/railties-3.0.3/lib/rails/application.rb:77:in
`method_missing'
  <path>/.rvm/gems/ruby-1.9.2-p136/gems/railties-3.0.3/lib/rails/rack/log_tailer.rb:14:in
`call'
  <path>/.rvm/gems/ruby-1.9.2-p136/gems/rack-1.2.1/lib/rack/content_length.rb:13:in
`call'
  <path>/.rvm/gems/ruby-1.9.2-p136/gems/rack-1.2.1/lib/rack/handler/webrick.rb:52:in
`service'
  <path>/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/1.9.1/webrick/httpserver.rb:111:in
`service'
  <path>/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/1.9.1/webrick/httpserver.rb:70:in
`run'
  <path>/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/1.9.1/webrick/server.rb:183:in
`block in start_thread'

I have the same exact issue.
Ruby 1.9.2p136
Passenger 3.0.2
Apache 2.2.14

I am currently looking for a solution.

Downgrading Ruby 1.9.2 to 1.8.7 fixed the issue for me.

I tried creating a new CRUD via "rails generate scaffold test
name:string" and even creating a new object there failed.

Instead of determining root cause, and since I don't require 1.9.2, I
downgraded.

Since I am using RVM, I am able to downgrade to 1.8.7 on both my dev
machine and server in only 10 minutes. I had to change some gems
(e.g. ruby-debug19 to ruby-debug) in my Gemfile, then run "bundle
install" on my dev machine, check in the new gems into SVN, then "cap
deploy" to the server.

On the server, with RVM now set to 1.8.7 ( rvm install ruby-1.8.7; rvm
use --default ruby-1.8.7; rvm use default ) I installed the passenger
gem ( gem install passenger ) and recompiled the apache module
( passenger-install-apache2-module ) and then had to reset my
httpd.conf file with the new setting for passenger, as specified by
the output to the passenger-install-apache2-module.

I hope this helps.

I was about to try a blank test program, too. I haven't had time to
let the server be down at the moment, so I backed down to 1.8.7 too. I
understand that 1.9.2 has much better performance, though, so I'd
really like to get it to work.

Can someone who is successfully using CentOS/Apache/Passenger/Ruby
1.9.2/Rails 3.0.3 please post the versions of CentOS, Apache, and
Passenger you are using? I can't think of any other variable that
could be relevant, can you?

I had this problem too, which turned out to be quite interesting: the
combination of attachment_fu with Ruby 1.9.2 and Passenger 3 is not a
good one.

If your app runs on WEBrick (mine did) you can fix this by patching
attachment_fu.

In any case my fix might help you, because it was in a monkeypatch to
Tempfile.

For details please see
http://www.spacebabies.nl/2011/01/10/rails-on-ruby-1-9-2-every-post-failing/

Thanks for the tip. I do have attachment_fu in my app (although I plan
to switch to Paperclip). I removed it completely as a test (deleted
all the files under vendor/attachment_fu), then restarted httpd, but
it didn't seem to help.