RubyonRails,从YAML加载常量



我对从配置/初始化器从YAML加载常量的意见/最佳实践感兴趣。目前,这些常量被加载到一个类变量中,服务类从self继承,这样就可以像这样访问它们

    ClassName.MY_CONSTANT 
    class ClassName
      class << self
        attr_accessor :MY_CONSTANT
      end
    end

初始化过程如下所示。

    YADA YADA YAML LOADING
    ClassName.MY_CONSTANT = yaml_config[:my_constant] || 1800

我对此的问题(我对此的一个问题)是,这会使铁轨变得相当脆弱。在开发过程中,如果我触摸控制器中的任何东西,就会重新加载库,因此这个常量变为零。

设置这样的常数的最佳方法是什么。它与缓存有关,所以永远不可能为零?

您描述的似乎是类级访问器,而不是常量。我假设您希望在引导/初始化时设置MY_CONSTANT一次,并且该值实际上是一个常量。

一种方法是使用全局常数,然后将类常数设置为该全局常数的值,例如:

# config/initializers/load_yaml_constant.rb
load_yaml_sometime_during_initialization
::CLASSNAME_MY_CONSTANT = yaml_config[:my_constant] || 1800
# my_class.rb
class MyClass
  MY_CONSTANT = ::CLASSNAME_MY_CONSTANT
end

相关内容

最新更新