ruby 轨道 : Can you put Ruby code in a YAML config file?

标签 ruby yaml

我想在我的 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)

在这种特定情况下,您必须查看加载文件的内容 - 在某些情况下, 它可能已经被设计为直接从环境中加载它,或者您可能需要:

  1. 猴子修补代码
  2. 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/

相关文章:

python - 不同的 YAML 数组表示

amazon-web-services - 如何使用 Cloudformation 在 AWS API Gateway 上设置代理

python - 搜索/替换/删除 Jekyll YAML Front Matter 类别标签

java - 如何在Spring Boot中从application.properties转换为application.yml?

ruby - 使用带有 SAN 的 Ruby OpenSSL 解码 CSR

ruby - 相当于 ActiveRecord 的 `serialize` 方法的 Mongoid

ruby - Ruby 中类型的约定是什么?

ruby - Sinatra - 通过 config.ru 设置缓存控制 header

jquery - Rails 3 升级后重新处理时回形针错误

azure-devops - 导航到 azure devops 构建服务器中的构建源目录