1

Rails アプリでさまざまなことを行うための小さな対話型スクリプトがあります。通常、これを cache_classes 構成オプションを無効にして実行するため、再起動せずにビューを変更およびリロードできますが、特定のテストは cache_classes が有効な場合にのみ機能します。特に、cache_classes が無効になっている場合、統合テストは非常に奇妙な動作を示します。

理想的には、スクリプトを再起動せずにスクリプト内から cache_classes をオンまたはオフにできるようにしたいのですが、この変数の値を更新することはできますが、効果はありません。

cache_classes を動的に更新する方法を知っている人はいますか?

または、cache_classes がオンになっている間にビューの変更を Rails に伝える方法があれば、cache_classes を永続的にオンにしておくことができるので、さらに良いでしょう。

どうもありがとう

4

1 に答える 1

0

この問題を抱えている可能性のある他の人のために、カスタム メソッドを使用してビューをキャッシュする必要があるかどうかを判断する比較的簡単な方法があります。

まず、ActionView::Resolver クラスのメソッドを次のようにオーバーライドする必要があります。

module ActionView
  class Resolver
    def caching?
      @caching = some_custom_method
    end
  end
end

次に、カスタム メソッドを使用して、必要な基準に応じてビュー キャッシュのオンとオフを切り替えることができます。

Rails のソース コードを掘り下げる手間を省くために、この記事を投稿しましたが、いくつか注意点があります。

a)Rails 3.0.14でのみこれを確認しました.これは現在私に適用できる現在のバージョンです. 他のバージョンでは動作する場合と動作しない場合があります。

b) ここに遅いメソッドを入れると、このメソッドはリクエストごとに何度も呼び出されるため、パフォーマンスが完全に損なわれます。私の場合、コードはローカルのテスト環境でのみ使用されており、必要なときに明示的に含める必要があるため、これを喜んで実行しますが、個人的には、次のようなものを配置するためのボール/胃がおそらくないでしょうこれは本番コードです。

これが誰かに役立つことを願っています。

于 2012-07-05T14:42:34.807 に答える