Рельсы 5.2 и далее
В Rails 5.2 введена концепция зашифрованных учетных данных . В основном, начиная с Rails 5.2, существует зашифрованный файл учетных данных, который генерируется при инициализации приложения в config/credentials.yml.enc
. Этот файл зашифрован и, следовательно, может быть передан в ваш инструмент управления исходным кодом. Существует также файл master.key
, который создается при инициализации приложения, который можно использовать для расшифровки файла учетных данных и внесения в него изменений.
Таким образом, учетные данные для AWS могут быть добавлены к нему как:
aws:
access_key_id: 123
secret_access_key: 345
Эти ключи могут быть доступны в вашем приложении как Rails.application.credentials.aws[:secret_access_key]
. Другие конфиденциальные настройки, такие как учетные данные для других используемых внешних служб, также могут быть добавлены в эту конфигурацию. Посмотрите этот блог Marcelo Casiraghi для более подробной информации.
Предварительные рельсы 5.2
До Rails 5.2 не было концепции системы учетных данных. Есть несколько способов, с помощью которых вы можете попытаться найти решение для сохранения вашей конфигурации.
A. Вы можете создать файл YAML
для определения конфигурации с нуля.
- Создайте файл с именем
my_config.yml
и поместите его в папку config
. Путь: config/my_config.yml
- Добавить в файл любую конфигурацию, необходимую в формате
YAML
(см. Выше для AWS)
- Внесите изменения в
application.rb
, чтобы загрузить этот файл во время инициализации следующим образом:
APP_CONFIG = YAML.load(ERB.new(File.new(File.expand_path('../my_config.yml', __FILE__)).read).result)[Rails.env] rescue {}
- Используя этот подход, вы сможете использовать
APP_CONFIG['aws']['access_key_id']
для конфигурации AWS, определенной выше. Для этого варианта использования настоятельно рекомендуется иметь отдельные файлы конфигурации для сред разработки и производства. Производственный файл, вероятно, не следует регистрировать в системе контроля версий для обеспечения безопасности.
B. Другой подход заключается в использовании некоторых гемов для управления конфигурациями, такими как railsconfig / config
ПРИМЕЧАНИЕ. Чтобы ответить на вопрос о сохранении этой конфигурации в database.yml
, настоятельно рекомендуется этого не делать. database.yml
- это файл конфигурации для хранения конфигурации, связанной с базами данных. Разделение проблем действительно помогает при масштабировании любого приложения, и, следовательно, рекомендуется помещать такие конфигурации в отдельный файл, который можно поддерживать независимо, не полагаясь на конфигурацию базы данных.