Я хотел бы сделать что-то вроде этого в своем 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"))
To:
loaded_data = YAML.load(ERB.new(File.read("my-file.yml")).result)
В этом конкретном случае вам нужно будет посмотреть, что загружает файл - в некоторых случаях, он может быть уже разработан для загрузки прямо из среды, или вам может потребоваться следующее:
Так как есть несколько плагинов, которые используют amazon_s3.yml, возможно, стоит опубликовать, какую библиотеку вы используете, которая его использует - в качестве альтернативы, я считаю, из быстрого Google, что библиотека AWS позволяет вам определять AMAZON_ACCESS_KEY_ID и AMAZON_SECRET_ACCESS_KEY как env vars и заберет их из коробки.
Можно, если он интерпретируется через ERB, и в этом случае он действует как представление ERB, а код Ruby находится между <%
и %>
Попробуйте:
access_key_id: <%= ENV['S3_KEY'] %>
secret_access_key: <%= ENV['S3_SECRET'] %>
... и посмотрите, работает ли