为什么我的ActiveRecord类实例变量在开发模式下的第一个请求后消失了?

时间:2009-08-10 19:50:41

标签: ruby-on-rails activerecord instance-variables

我的一个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

是否有关于开发模式的内容可以从每个请求的类中获取实例变量?如果是这样,有没有办法为特定的变量或类禁用它?

1 个答案:

答案 0 :(得分:0)

在开发模式下,类不会被缓存,这意味着它们都会在每个请求中重新加载。在测试和生产模式下,它们被缓存,这意味着您的类实例变量可以生存。缓存设置在config / environments中的相关文件中设置。

一种解决方法是在初始值设定项中设置全局或环境变量,然后定义类级访问器以返回该值。