我想制作一些环境变量。我该如何设置/获取它们?例如,我想添加变量virtual_host,并能够从我的应用程序中的任何位置访问它。
谢谢
答案 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对象。只需了解这种混淆是如何工作的:它是与用户偏好或整个应用程序相关联的,以及持久化和检索这些值所涉及的开销。