Techioz Blog

Ruby on Rails: 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)

この特定のケースでは、ファイルをロードしているものを確認する必要があります。場合によっては、 環境から直接ロードするようにすでに設計されているか、次のいずれかを行う必要がある場合があります。

amazon_s3.yml を使用するプラグインがいくつかあるため、それを使用しているライブラリを投稿する価値があるかもしれません。あるいは、簡単にグーグルで調べたところ、AWS ライブラリでは AMAZON_ACCESS_KEY_ID と AMAZON_SECRET_ACCESS_KEY を環境変数として定義できると思います。それらを箱から取り出します。