1

10 分ごとにいくつかの XML フィードを解析し、render: fileメソッドを使用して Rails プロジェクトのすべてのページに含めるいくつかのパーシャルを作成する cron ジョブがあります。問題は、明らかに、サーバーが再起動するまで更新されないことです。

とにかく、レールに毎回このファイルを強制的に更新させるにはどうすればよいですか?

前もって感謝します。

4

3 に答える 3

6

代わりに使用してください:

render :inline => File.read(file_name), :layout => true
于 2011-09-13T11:14:52.937 に答える
2

render(:file) を誤用していると思います。これは間違いなく、意図された使用方法ではありません。パーシャルのレンダリングは、データロード手法ではなく、複数の場所でモジュール化された erb (または使用するテンプレート lang) コードをレンダリングするために使用されることになっています。動的に変化するデータをロードするために使用しています(表示されます)。

あなたが実際にやろうとしているのはフラグメント キャッシングだと思いますが、それ以上のコンテキストがなければ、私は間違っている可能性があります。

フラグメント キャッシングの優れたチュートリアル: http://www.railsenvy.com/2007/3/20/ruby-on-rails-caching-tutorial-part-2

おそらく、cron ジョブは、キャッシュしようとしているフラグメントを作成するスクリプト/ランナー スクリプトを実行するでしょう。

私がここから離れている場合は、ロードしているファイルの種類と何を達成しようとしているのかを明確にしてください。

于 2009-06-13T22:07:18.727 に答える
1

これは、本番モードではRailsがすべてのクラスとビュー/部分をキャッシュするために発生します。この問題を解決するには、フラグメントキャッシングブロック内にパーシャルをレンダリングし、ブロックコンテンツを更新するときにメソッドexpire_fragmentを使用します。他の方法として開発モードに切り替えることもできますが、アプリケーションの速度が低下します。

于 2009-06-07T18:09:04.357 に答える