繁体   English   中英

Ruby on Rails,是否从YAML加载常量?

[英]Ruby on Rails, load constants from YAML?

我对从config / initializers从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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM