我的一个AR类上有一个类实例变量。我使用初始化程序在启动时设置其值,然后,除了从中读取之外,再也不要再触摸它。在开发模式下,此值在第一次请求Web服务器后消失。但是,在运行测试时,使用控制台或运行生产服务器时,这不会发生。
# The AR class
class Group < ActiveRecord::Base
class << self
attr_accessor :path
end
end
# The initializer
Group.path = File.join(RAILS_ROOT, "public", "etc")
# First request in a view
%p= Group.path #=> "/home/rails/app/public/etc"
# Second request in a view
%p= Group.path #=> nil
是否有关于开发模式的内容可以从每个请求的类中获取实例变量?如果是这样,有没有办法为特定的变量或类禁用它?
答案 0 :(得分:0)
在开发模式下,类不会被缓存,这意味着它们都会在每个请求中重新加载。在测试和生产模式下,它们被缓存,这意味着您的类实例变量可以生存。缓存设置在config / environments中的相关文件中设置。
一种解决方法是在初始值设定项中设置全局或环境变量,然后定义类级访问器以返回该值。