gpt4 book ai didi

ruby-on-rails - rails 。在开发模式下预加载类

转载 作者:行者123 更新时间:2023-12-04 06:34:23 26 4
gpt4 key购买 nike

在开发模式下预加载 Rails 模型的正确方法是什么?

背景:Rails 2.2,memcahe 作为缓存存储。

当 Rails 以生产模式启动时,它首先会预加载和缓存所有模型。
在开发模式下,它使用延迟加载。这就是为什么我们将任何模型存储到 Rails 缓存中,例如,当我们尝试做 Rails.cache.read("key") memcache fire,那个用户是未知的类/模块。在这种情况下预加载类的正确方法是什么?

最佳答案

您可以通过执行以下操作来解决此问题:

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'] 代替。当然,您的另一个选择是简单地在您的开发环境中禁用缓存,那么您根本不必处理这个问题。

关于ruby-on-rails - rails 。在开发模式下预加载类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5013773/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com