我有一個cron作業,每十分鐘解析一些XML源,並使用render: file
方法創建一些部分以包含在我的Rails項目的每個頁面上。問題是,顯然,它們不會刷新,直到服務器重新啓動。在Rails中渲染外部修改的文件
無論如何,我能做些什麼來強迫rails每次刷新這個文件?
在此先感謝。
我有一個cron作業,每十分鐘解析一些XML源,並使用render: file
方法創建一些部分以包含在我的Rails項目的每個頁面上。問題是,顯然,它們不會刷新,直到服務器重新啓動。在Rails中渲染外部修改的文件
無論如何,我能做些什麼來強迫rails每次刷新這個文件?
在此先感謝。
我認爲你濫用渲染(:文件)。這絕對不是它打算如何使用。渲染局部變量應該用於在多個位置渲染模塊化的erb(或任何您使用的模板lang)代碼,而不是數據加載技術。您正在使用它(看來)加載動態變化的數據。
我認爲你真的想要做的是片段緩存,但沒有更多的上下文,我可能是錯的。
有關片段緩存一個偉大的演練:http://www.railsenvy.com/2007/3/20/ruby-on-rails-caching-tutorial-part-2
可能是你的cron作業將運行一個腳本/亞軍腳本,將創建你希望緩存片段。
如果我不在這裏,請嘗試澄清您正在加載的文件類型以及要完成的操作。
發生這種情況是因爲在生產模式下,Rails兌現了它的所有類和視圖/部分。爲了解決這個問題,你可以在片段緩存塊中渲染你的partials,當你想刷新塊內容時使用方法expire_fragment。其他方式可以切換到開發模式,但它會讓你的應用程序變慢。
的辦法當然是沒有運行在發展中的應用。這是一個可怕的想法。一個不太可怕的,但仍然可怕的想法是在生產中打開課程重新加載,但這是非常糟糕的情況。 – 2009-06-13 22:00:18
使用,而不是:
render :inline => File.read(file_name), :layout => true
我同意。聽起來像片段緩存可以完成這項工作。讓cron作業過期片段緩存,然後erb將運行,並且下次顯示它們時將被緩存。 – Shadwell 2009-06-13 22:14:12