1

返信後にこの宝石ラックを見つけました:

応答が送信され、クライアントへのソケットが閉じられた後に起動するRackアプリのフック。これは、応答時間にまったく影響を与えることなく、ガベージコレクション、統計収集、ログのフラッシュなど、遅延可能でバックグラウンド化できないタスクを実行するための理想的な時間です。

使用法

コールバックをに追加するだけenv['rack_after_reply.callbacks']です。

use Rack::ContentLength
use Rack::ContentType, 'text/plain'
run lambda { |env|
  env['rack_after_reply.callbacks'] << lambda { ... }
  [200, {}, ['hi']]
}

しかし、私はそれをRails3アプリに適合させることができませんでした。

Rails3アプリでこれを使用する方法について誰かが言うことができますか?

4

2 に答える 2

2

実際のリクエスト中、つまりコントローラーで、コールバックをRackenvに追加する必要があります。

オブジェクトを使用してRackenvにアクセスできrequestます。

コントローラ内:

def index #or whatever your method is, you could do this in filter
  #normal controller code...

  request.env['rack_after_reply.callbacks'] << lambda do
    $stderr.puts "Hello from callback"
  end
end

コールバックは、このメソッドにルーティングされるリクエストの後に実行されます。

于 2012-05-05T22:59:30.213 に答える
0

config.middleware.use(new_middleware, args)この行をapplication.rbまたは特定のenvironment.rbファイルに追加するだけです。

http://guides.rubyonrails.org/rails_on_rack.html#configuring-middleware-stack

于 2012-05-03T14:27:50.627 に答える