def inside_rack_middleware
MyModel.update_attributes(:ip => request.ip)
redirect somewhere else
end
それは可能ですか?
def inside_rack_middleware
MyModel.update_attributes(:ip => request.ip)
redirect somewhere else
end
それは可能ですか?
Twitter の @supercoco9 経由で、「ミドルウェアがラック/レール スタックにある場合は、AR 経由でモデルを直接使用できます」
はい、ミドルウェア内から AR モデルにアクセスできます。ミドルウェアに byebug を追加し、モデルにアクセスできました。
編集:- それで、Rails アプリで使用する Rack ミドルウェアの作成を開始しました。ミドルウェアで自分の AR モデルにアクセスしようとしましたが、その動作はかなりおかしなものでした。サーバーの新規起動後に提供される最初のリクエストでは、すべてがうまくいきます。しかし、その後のリクエストはすべてエラーになりました:-
MyMiddleware のコピーがモジュール ツリーから削除されましたが、まだアクティブです
このエラーは、ミドルウェア内から AR モデルへのアクセスを停止するとすぐに消えました。Ruby/Rails を始めたばかりなので、Ruby/Rails/Rack の世界の特定の用語がわかりません。しかし、簡単に言えば、Rack ミドルウェアは、誰でも任意の Rack アプリで使用できる一種のプラグ アンド プレイ ライブラリにすぎません。したがって、ミドルウェア内のいかなる種類の Rails オブジェクトにも依存するべきではありません。