从YAML生成复杂的Ruby类层次结构

时间:2015-12-15 22:59:56

标签: ruby configuration yaml

我正在寻找一种通用机制,用于从具有多个部分的配置文件构造配置对象。类似的东西:

db:                           # key to section-specific config class
  adapter: sqlite3            # key to implementation-specific subclass
  database: ':memory:'        # ┐
  pool: 5                     # ├ implementation-specific key/value pairs
  timeout: 5000               # ┘

source:                       
  protocol: OAI
  oai_base_url: http://oai.example.org/oai
  metadata_prefix: some_prefix
  set: some_set
  seconds_granularity: true

index:
  adapter: solr
  url: http://solr.example.org/
  proxy: http://foo:bar@proxy.example.com/
  open_timeout: 120
  read_timeout: 300
  retry_503: 3
  retry_after_limit: 20

在阅读此文件时,我们会创建一个DatabaseConfig(特别是Sqlite3Config,它是DatabaseConfig的子类),SourceConfig(特别是OAIConfig)和IndexConfig(特别是SolrConfig)。

这是一种开箱即用的方法,我不必写一堆case/when语句来将不同的键映射到不同的类,作为参数传递给YAML.object_maker

注意:这是一个Rails应用程序,但如果Config gem可以做这样的事情而没有太多的跳跃,我会对它开放。

0 个答案:

没有答案