如何在YAML文件中使用变量?

sam*_*207 9 ruby yaml ruby-on-rails

我有YAML文件需要将变量作为输入:

outputters:
    - type        : DateFileOutputter
      name        : logfile
      level       : DEBUG
      date_pattern: '%Y%m%d'
      trunc       : 'false'
      dirname     : "/home/sameera/workspace/project/log"
      filename    : "message.log"
      formatter   :
        date_pattern: '%m/%d/%Y %H:%M:%S'
        pattern     : '%d %l - %m'
        type        : PatternFormatter
Run Code Online (Sandbox Code Playgroud)

我想传递dirname一个参数,如:

      dirname     : "<%= LOGFILE_PATH%>"
Run Code Online (Sandbox Code Playgroud)

LOGFILE_PATH在一个名为的文件中定义init.rb.

Ser*_*sev 20

你可以使用ERB.

例如:

template = ERB.new File.new("path/to/config.yml.erb").read
processed = YAML.load template.result(binding)
Run Code Online (Sandbox Code Playgroud)

你可以在这里阅读更多有关绑定的信息:ruby metaprogramming.

  • 嗨@Sergio Tulentsev,它有用,但是因为我想要一个纯粹的yml解决方案,我试着用.yml做同样但没有运气,谢谢你的回答并抱歉延迟没有发布任何更新欢呼同样的话题 (2认同)