Rails3でPUTメソッドのリクエストを受けるとレスポンスが204に強制されてしまう件

204ステータスは、内容なし。
リクエストを受理したが、返すべきレスポンスエンティティが存在しない場合に返される。
Rails3ではなぜかPUTメソッド(GET / POST以外)だと204ステータスに強制されてしまい、コンテンツを返せない。
本当は200ステータスでコンテンツも返したい。
 

200ステータスでコンテンツを返す方法

ActionController::Responder.api_behavior を書き換える。
initializes辺りに以下ソースを入れておく。

module ActionController
  class Responder
    def api_behavior(error)
      raise error unless resourceful?

      if get?
        display resource
      elsif post?
        display resource, :status => :created, :location => api_location
      elsif resource.present?
        display resource
      else
        head :no_content
      end 
    end 
  end 
end

 
GET / POST以外のメソッドの場合に204を返すようにしている処理は、
actionpack-3.2.13/lib/action_controller/metal/responder.rb
で定義されていた。