如何在rails 3中设置和访问配置变量

时间:2011-11-18 13:20:50

标签: ruby-on-rails ruby

我想制作一些环境变量。我该如何设置/获取它们?例如,我想添加变量virtual_host,并能够从我的应用程序中的任何位置访问它。

谢谢

2 个答案:

答案 0 :(得分:2)

对于Rails应用程序中的配置变量,我倾向于使用ActiveSupport::Configurable。如果您的变量与特定类相关,则此方法非常有效。假设您有一个名为Security的类,并且您想要为此类配置全局属性。

class Security
  include ActiveSupport::Configurable

  config.enabled = true
  config.level = 'high'

  config_accessor :enabled, :level
end

如果要在许多应用程序之间共享此类,可以在初始化程序中在运行时设置配置变量:

Security.config.enabled = false

由于我已经通过config_accessor声明了这两个变量,因此您不必使用config作为前缀。您只需调用Security.enabled或Security.level即可。这是可选的。

这个方法的另一个好处是配置是由子类继承的,但可以被覆盖:

class LessSecurity < Security
  config.level = 'medium'
end

答案 1 :(得分:0)

定义一个Helper类以访问这些属性,您可以在任何需要的地方访问它们。此外,它还有一个额外的好处,即集中你的“全局”,同时让你有机会在当时放置业务逻辑。

请点击此处查看示例:http://www.randomsequence.com/articles/site-wide-global-variables-in-ruby-on-rails/

编辑:

关于将这些值设置为稍后保留,可以创建ApplicationConfig Model对象。只需了解这种混淆是如何工作的:它是与用户偏好或整个应用程序相关联的,以及持久化和检索这些值所涉及的开销。