Почему мои переменные экземпляра класса ActiveRecord исчезают после первого запроса в режиме разработки? - PullRequest
1 голос
/ 10 августа 2009

У меня есть переменная экземпляра класса в одном из моих классов AR. Я устанавливаю его значение при загрузке с помощью инициализатора и после этого никогда больше не трогаю его, кроме как для чтения из него. В режиме разработки это значение исчезает после первого запроса к веб-серверу. Однако при запуске тестов, использовании консоли или производственном сервере этого не происходит.

# 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 голосов
/ 11 августа 2009

В режиме разработки классы не кэшируются, что означает, что они все перезагружаются при каждом запросе. В тестовом и производственном режиме они кэшируются, что означает, что ваш экземпляр класса vavibles может использоваться. Настройка кэширования задается в соответствующих файлах в config / средах.

Один из обходных путей - установить глобальную переменную или переменную среды в инициализаторе, а затем определить метод доступа уровня класса, который будет возвращать это значение.

...