2012-07-02 146 views
1

我有一個小小的交互式腳本,可以用我的Rails應用程序做一堆事情。一般來說,我會在禁用cache_classes配置選項的情況下運行此操作,以便我可以修改並重新加載視圖,而無需重新啓動它,但某些測試只適用於啓用cache_classes。特別是當cache_classes被禁用時,集成測試顯示出非常奇怪的行爲。是否可以動態更改Rails中的cache_classes配置設置?

理想情況下,我想要做的就是能夠在不重新啓動腳本的情況下打開和關閉腳本中的cache_classes,但雖然可以更新此變量的值,但它沒有任何作用。

有誰知道動態更新cache_classes的方法嗎?

或者,如果在cache_classes打開的​​情況下有辦法告訴rails有關視圖更改的情況,那可能會更好,因爲我可以永久保留cache_classes。

非常感謝

回答

0

對於其他人誰可能有這個問題的利益,不存在使用自定義的方法來確定是否意見應該被緩存的比較直接的方式。

首先,我們需要在對的ActionView覆蓋方法::解析器類如下

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

然後我們就可以使用我們的自定義方法打開視圖緩存和關閉,這取決於我們想要的任何標準。

我在節省別人通過Rails源代碼中大挖的希望公佈這一點,但也有一些注意事項:

一)我只有選中此on Rails的3.0.14,因爲這是現在適用於我的當前版本。它可能會或可能不會在其他版本上工作。

b)如果你在這裏放一個緩慢的方法,你會絕對殺死你的性能,因爲這個方法每次請求會被調用很多次。我很高興做到這一點,因爲在我的情況下,代碼只在我的本地測試環境中使用,我必須在需要時明確包含它,但是我個人認爲,我可能不會有球/這在生產代碼中。

希望這可以幫助別人。

相關問題