如何在Rails中的页面加载中持久保存Ruby类变量?

时间:2012-01-31 19:21:52

标签: ruby-on-rails ruby persistence

我有一个类变量,我想从initilizer设置并从那时起保持值。以下示例仅适用于第一页加载。有更好的方法吗?

应用程序/模型/ token.rb

class Token    
  class << self
    attr_accessor :salt
  end
end

配置/ initilizers / token.rb

Token.salt = "savory hash"

2 个答案:

答案 0 :(得分:4)

在开发模式下,您的类将重新加载每个请求,因此在第一个请求之后重新加载类时,在启动时初始化程序中设置的值将不会保留。 (development.rb中“ config.cache_classes = false ”的结果)。

但是,如果要在初始化程序中设置一个值并使其在开发模式中保持不变,则可以将其添加为常量:

initializers.rb

 SALT='savory_hash'

OR作为应用程序配置变量:

application.rb中

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

可以在应用中的任何位置访问:

 Rails.application.config.token_salt

当然,如果在您的环境中启用类缓存,您应该会发现变量的值将持续存在而不执行上述任何操作。

答案 1 :(得分:0)

您可以尝试将它们存储在会话变量,缓存中,甚至存储在自己的表(参考表)中。