10分ごとにいくつかのXMLフィードを解析し、render: file
メソッドを使用してRailsプロジェクトのすべてのページに含める部分的な作業を作成しました。問題は、明らかに、サーバーが再起動するまで更新されないことです。Railsで外部から変更されたファイルをレンダリングする
とにかく、このファイルを毎回強制的に更新するにはどうすればよいですか?
ありがとうございます。
10分ごとにいくつかのXMLフィードを解析し、render: file
メソッドを使用してRailsプロジェクトのすべてのページに含める部分的な作業を作成しました。問題は、明らかに、サーバーが再起動するまで更新されないことです。Railsで外部から変更されたファイルをレンダリングする
とにかく、このファイルを毎回強制的に更新するにはどうすればよいですか?
ありがとうございます。
あなたはレンダリング(:ファイル)を悪用していると思います。これは間違いなくそれがどのように使用されることが意図されていません。部分的なレンダリングは、データロード手法ではなく、複数の場所でerb(または使用するテンプレートlang)コードをレンダリングするために使用されるはずです。あなたは動的に変化するデータを読み込むためにそれを使用しています。
あなたが実際にやろうとしているのはフラグメントキャッシュですが、それ以上のコンテキストがなければ、私は間違っている可能性があります。おそらく、あなたのcronジョブを使用すると、キャッシュに探しているフラグメントを作成するスクリプト/ランナースクリプトを実行しますhttp://www.railsenvy.com/2007/3/20/ruby-on-rails-caching-tutorial-part-2
:フラグメントキャッシュ上の偉大なウォークスルーについては
。
ここでベースがオフの場合は、読み込んでいるファイルの種類と達成しようとしていることを明確にしてください。代わりに
これは、プロダクションモードでは、すべてのクラスとビュー/パーシャルがキャッシュされるためです。この問題を解決するには、フラグメントキャッシングブロック内にパーシャルをレンダリングし、ブロックコンテンツをリフレッシュするときにメソッドexpire_fragmentを使用します。他の方法では、開発モードに切り替えることができますが、アプリケーションを遅くするでしょう。
ソリューションは確かに開発中のアプリを実行していません。それはひどい考えです。それほど恐ろしい、しかしまだひどい考え方は、プロダクションでクラスの再読み込みをオンにすることですが、これはかなり最悪の場合のシナリオです。 –
用途:
render :inline => File.read(file_name), :layout => true
私は同意します。フラグメントキャッシュのような音が働きます。 cronジョブがフラグメントキャッシュを期限切れにした後、erbが実行され、次に表示されるときにキャッシュされます。 – Shadwell