Как сохранить переменные класса Ruby при загрузке страниц в Rails? - PullRequest
1 голос
/ 31 января 2012

У меня есть переменная класса, которую я хотел бы установить из инициализатора, и с этого момента значение сохраняется. Пример ниже работает только для загрузки первой страницы. Есть ли лучший способ сделать это?

приложение / модели / token.rb

class Token    
  class << self
    attr_accessor :salt
  end
end

конфиг / initilizers / token.rb

Token.salt = "savory hash"

Ответы [ 2 ]

4 голосов
/ 01 февраля 2012

В режиме разработки ваш класс будет перезагружаться при каждом запросе, поэтому значение, установленное в инициализаторе при запуске приложения, не будет сохраняться при перезагрузке класса после первого запроса.(Результат " config.cache_classes = false " в вашем development.rb).

Однако, если вы хотите установить значение в инициализаторе и сохранить его в режиме разработки,Вы можете добавить его как константу:

initializers.rb

 SALT='savory_hash'

ИЛИ как переменную конфигурации приложения:

application.rb

 module YourAppsName
  class Application < Rails::Application
   config.token_salt = "savory_hash"
  end
 end

, который будет доступен в любом месте приложения с помощью:

 Rails.application.config.token_salt

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

0 голосов
/ 01 февраля 2012

Вы можете попытаться сохранить их в переменных сеанса, кэше или даже в своей собственной таблице (справочная таблица).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...