2011-10-22 10 views
4

rack-timeoutはGemfileに含まれていますが、本番環境ではミドルウェアとしてのみ必要です。このように初期化子で、我々は持っている:ミドルウェアはどのように削除されますか?

config.middleware.delete Rack::Timeout 

をこの行は配列から削除ラックタイムアウトを示し前後に検査します。いずれにせよ、依頼は依然としてタイムアウトしており、素早く「置く」ことは、それが本当に犯人であることを示しています。

これは、削除が呼び出される前にミドルウェアスタックが既にビルドされているためですか?または、要求ごとにスタックが読み込まれていますか?そうだとすれば、何が問題なのでしょうか?

答えて

8

なぜ次のようなものがないのですか?

group :production do 
    gem "rack-timeout" 
end 

は理論的には、初期化子におけるミドルウェアの削除は、あなたがconfig/initializers/で何かを置くことについて話していると仮定すると、サーバの再起動後、問題の世話をする必要があります。いいえ(私はdevのサーバーを再起動した後

sleep 1 

すべてがクールに見えた:


はもう少し実験を行なったし、config/initializers/rack-timeout.rbにこれを落とし:

if Rails.env.production? 
    Rack::Timeout.timeout = 0.5 
else 
    Rails.configuration.middleware.delete Rack::Timeout 
end 

そして、これは足場コントローラに視界のタイムアウト:D)。だから、おそらく悪い変数です。

私はまだ生産専用グループを使用する方が良い解決策だと思います。

Ran with Rails 3.2.2 with ruby​​ 1.9.2-p290 on OSX。

+0

プロジェクトは完了しているので、私は結果を確認することができませんが、これは私にとって堅実に見えます! –

+0

私はこのスレッドへのリンクをtwitterで見たので、私はそれに答えをつけると思った。 :) –

関連する問題