リクエスト間で変更されないデータを表示する Catalyst Web アプリケーションを作成しています。アプリケーションの起動時にこのデータをロードし、関連するコントローラーが使用できるようにどこかに貼り付けたいと思います。このデータをどこにロードし、どこに保存すればよいですか? App.pm
最初に、メインファイルにロードして、アプリケーション構成に入れようとしました。これは機能しApp.pm
ますが、実際には一緒に属していない多くの読み込みサブルーチンによってファイルが散らばっているため、醜いです:
__PACKAGE__->config(this => load_this());
__PACKAGE__->config(that => load_that());
# et cetera
次に、それらを使用するコントローラーにデータの一部をロードし、コントローラーの構成ハッシュに保存できると考えました。一部のデータは複数のコントローラーで必要になるため、これも完全ではありません。
また、データを共有するのではなく、コントローラーにローカライズできると考えました。データを操作するすべてのコードを多かれ少なかれ 1 か所にまとめることができるので、これはいい感じです。問題は、コントローラーが結果のページの一部を他のコントローラーにもレンダリングする必要があることです。たとえば、タイトル ページ コントローラーが最近のニュースのリストを表示したい場合、ニュース コントローラーにリストをレンダリングするように依頼する必要があります。これは、Catalyst での推奨される方法ではないようです。
これをどのように解決しますか?
(データの性質: これは音楽祭の Web サイトです。データベースは過剰で編集が難しいため、ラインナップ、スポンサーのリスト、および YAML ファイルから抽出されたその他の単純なデータがあります。)