我想在我的 amazon_s3.yml 配置文件中做这样的事情:
access_key_id: ENV['S3_KEY']
secret_access_key: ENV['S3_SECRET']
...但我知道这是行不通的。不确定这是否可能,但是您可以将 Ruby 代码放入 YAML 文件中吗?
最佳答案
通常不/直接。我这样说是因为为了使用 ruby 结果,你需要在加载文件之前先使用类似 ERB 的东西。在代码方面,您需要从以下内容开始:
loaded_data = YAML.load_file("my-file.yml")
甚至
loaded_data = YAML.load(File.read("my-file.yml"))
收件人:
loaded_data = YAML.load(ERB.new(File.read("my-file.yml")).result)
在这种特定情况下,您必须查看加载文件的内容 - 在某些情况下, 它可能已经被设计为直接从环境中加载它,或者您可能需要:
- 猴子修补代码
- Fork + 使用您的自定义版本。
由于有一些插件使用 amazon_s3.yml,可能值得发布您正在使用的库使用它 - 或者,我相信通过快速谷歌,AWS 库允许您将 AMAZON_ACCESS_KEY_ID 和 AMAZON_SECRET_ACCESS_KEY 定义为环境变量它会开箱即用。
关于 ruby 轨道 : Can you put Ruby code in a YAML config file?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3277428/