2011-02-16 57 views
2

在開發模式下預加載Rails模型的正確方法是什麼?Rails。在開發模式下預加載課程

背景:Rails 2.2,memcahe as cache store。

當Rails在生產模式下啓動時,首先它預加載並緩存所有模型。 在開發模式下,它使用laizy加載。這就是爲什麼我們將任何模型存儲到Rails緩存中,例如,Rails.cache.write(「key」,User.find(0))在app的下一個loadind中,當我們嘗試Rails.cache.read(「key」 )memcache火災,該用戶是未知的類/模塊。在這種情況下預習班的正確方法是什麼?

回答

3

你可以做這樣的事情解決這個問題:

User if Rails.env == 'development' 
@user = Rails.cache.fetch("key"){ User.find(0) } 

這將迫使用戶模型中的高速緩存語句之前重新加載。如果你有多個緩存語句的類,你可以這樣做:

class SomeController 
    [User, Profile, Project, Blog, Post] if Rails.env == 'development' 

    def show 
    @user = Rails.cache.fetch("user/#{params[:user_id]") do 
     User.find(params[:user_id]) 
    end 
    end 
end 

如果你在Rails的2.x和Rails.env不工作,你可以隨時使用RAILS_ENV或ENV [「RAILS_ENV」]來代替。當然,您的其他選擇是在您的開發環境中簡單地禁用緩存,那麼您根本不必處理這個問題。

相關問題