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

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

应用程序/模型/ token.rb

class Token class << self attr_accessor :salt end end 

配置/ initilizers / token.rb

 Token.salt = "savory hash" 

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

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

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 

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

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