簡體   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