シンプルなラックミドルウェア "hello world"を試してみたいが、私は立ち往生しているようだ。 メインsytaxが変更のようないくつかの例には、このコードを使用するので、それは、見えます:Hello Worldラックミドルウェア3:すべての要求のボディを処理する方法
require 'rack/utils'
class FooBar
def initialize(app)
@app = app
end
def call(env)
status, headers, body = @app.call(env)
body.body << "\nHi from #{self.class}"
[status, headers, body]
end
end
はエラーを生成します。私はそこに他のコードを見たとき
undefined method `<<' for #<ActionDispatch::Response:0x103f07c48>
でも、私はそれらを得るように見えることはできませんレール3.0.3で走るここ
は私の具体的な質問です:
- は、どのように私はレールのアプリから任意の出力のボディを実行し、変更するためのシンプルなラックミドルウェアを得ることができますか?
- 私はRails.application.config.middleware.use宣言をどこに置くべきですか? (私はそのための設定/初期化子で独自のイニシャライザを作成しました)
ありがとうございます!
# in config/application.rb
config.middleware.use 'FooBar'
# in config/initializers/foo_bar.rb
class FooBar
def initialize(app)
@app = app
end
def call(env)
status, headers, response = @app.call(env)
[status, headers, response.body << "\nHi from #{self.class}"]
end
end
が助言すること、(少なくともRailsの3.0.3に)その上のほぼすべての他の要求は、これが原因別のミドルウェア(ラックに失敗します: