Rails: share information within a Request scope - Stack Overflow
ここにあるように Thread.current を使うようなクラスを作って、ApplicationControllerのaround_filter で初期化+開放を行うとよさそう。
例えば構造化されたリクエストコンテキストを持ったロガーとか、エラーレポーティングとか、別のAPI呼び出しにリクエストコンテキストを含ませたいとか、そういったときに便利。他にも、サービスクラス、モデルなどに、事前に計算しておいた値を渡してなんとかしたい、みたいなケースで、引数バケツリレーを回避できたりする。
ある種のグローバル変数ではあるので、乱立・多用はよくない。
けれども、入り組んだアプリケーションでは、こういうことを別の機能をつかって実現していたりする(キャッシュ、DBにいったん書き込んで読み込む、など)ので、こういった場合に、場当たり的ではあるが、使うことで、ネットワークやデータストアのIO待ちがなくなり、処理速度をもりっとを上げられる。
当然ながら全部メモリに乗ることになるので、アプリケーションサーバのメモリが潤沢であること、という前提がついてくるが。
と、いうのをやってくれる request_store というのがあった。
steveklabnik/request_store: Per-request global storage for Rack.