class Test
def settings
@setting ||= load_user_env
end
def load_user_env
{one: 'Test'}
end
end
t = Test.new
t.settings
t.settings
在rails控制台中load_user_env
方法被调用一次,但在WEBrick的开发环境中,它每次被调用?
怎么可能?
答案 0 :(得分:1)
编辑:实例变量应仅保留在每个请求的上下文中,因此每次发出请求时都应重新初始化。在您的控制台中,当您执行t = Test.new
时,您将创建该类的单个实例,这就是为什么load_user_env
仅被调用一次的原因。您可以使用类变量@@setting
,它应该在Test
的请求和实例之间保持不变,但我不确定如何在dev模式下重新加载类会影响它。
Rails会在每个请求中以开发模式重新加载类。在控制台中,除非您拨打reload!
。
如果为开发环境设置config.cache_classes = true
,则不应再重新加载它们,它也应该使它更快。不利的一面是,每次进行更改时都必须重新启动服务器。