我有一个需要使用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参数.
<%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)