访问YAML文件中的'ENV'变量

Pac*_*dUp -2 ruby yaml

我有一个需要使用ENV变量的自定义yaml文件.

YAML.load_file('config/databases.yml')
Run Code Online (Sandbox Code Playgroud)

需要从yaml文件中的ENV变量访问PASSWORD变量,如下所示

TEST: 
     PASSWORD:  ENV["TEST_DB_PW"]
Run Code Online (Sandbox Code Playgroud)

这不是RAILS应用程序.

我该怎么做呢?<%ENV ["TEST_DB_PW"]%>适用于RAILS但如果它是一个简单的ruby脚本则不起作用.

require 'yaml'
class Databases
  def initialize
    if File.exist?('config/databases.yml')
      @databases=YAML.load_file('config/databases.yml')
    else
      # You screwed up... 
    end
  end
end

def print_data
 @databases['TEST']['PASSWORD']
end
Run Code Online (Sandbox Code Playgroud)

print_data需要解析为YAML文件中引用的ENV参数.

Ste*_*fan 8

<%ENV ["TEST_DB_PW"]%>适用于RAILS但如果它是一个简单的ruby脚本则不起作用.

<% ... %>是一个ERB标签.为了使用它,您必须相应地解析文件.

假设你有一个文件config/database.yml:

TEST: 
  PASSWORD: <%= ENV["TEST_DB_PW"] %>
Run Code Online (Sandbox Code Playgroud)

您可以通过以下方式加载:

require 'yaml'
require 'erb'

ENV["TEST_DB_PW"] = "secret"

YAML.load(ERB.new(File.read('config/database.yml')).result)
#=> {"TEST"=>{"PASSWORD"=>"secret"}}
Run Code Online (Sandbox Code Playgroud)