我正在处理一个config.yml从当前目录读取配置文件的应用程序。此配置文件包含不应签入源控制的机密信息(API 密钥)和其他可以签入的配置信息。
我想要做的是将这个配置文件分成两部分,分别是config.secret.yml和config.public.yml. config.secret.yml将被源代码管理忽略,而config.public.yml可以签入。
然后,我想以某种方式创建一个config.yml类似文件的对象,该对象有效地“符号链接” config.secret.ymland的连接内容config.public.yml,以便发生这种情况:
> cat config.secret.yml
---
:api_key: 2712ab206a8003e44b2a84c467fc1b58
>
> cat config.public.yml
:site_id: 123
>
> cat config.yml
---
:api_key: 2712ab206a8003e44b2a84c467fc1b58
:site_id: 123
Run Code Online (Sandbox Code Playgroud)
我知道符号链接本身不支持这种行为,并且通常会从应用程序端读取“默认”和“本地”设置,但让我们假设只有一个配置文件可以被阅读。
该文件由 Ruby 的File.read()方法读取并解析,YAML.load()如果这为狡猾的黑客提供了任何机会。