Действительно ли я являюсь сумасшедшим, или действительно ли это - плохая идея сохранить мое имя пользователя SMTP и пароль для ActionMailer в фактическом (разработка/производство) файл конфигурации? Кажется, что я должен сохранить его зашифрованное место, или в очень минимальном, исключить его из моих Подвижных нажатий.
Прямо сейчас я просто удаляю пароль из своего исходного файла прежде, чем выполнить нажатие, но там получен, чтобы быть более умным путем, чем тот, который я использую.:)
Возможно, я должен сохранить его в своей базе данных как другой пользователь (который уже снабжен зашифрованными паролями), и выберите его программно?
Используйте файл конфигурации приложения который не хранится в вашем репозитории для хранения конфиденциальной информации. Вот как я это сделал:
Добавьте app_config.yml
в каталог config
. Его содержимое будет выглядеть так:
smtp_password: kl240jvfslkr32rKgjlk
some_other_password: 34hg9r0j0g402jg
and_so_on: lkn$@gJkjgsFLK4gaj
Добавьте preinitializer.rb
в каталог config
со следующим содержимым:
require 'yaml'
APP_CONFIG = YAML.load(File.read(RAILS_ROOT + "/config/app_config.yml"))
Замените ваши пароли на значения в переменной APP_CONFIG
, например так:
smtp_password = kl240jvfslkr32rKgjlk # старая версия
smtp_password = APP_CONFIG['smtp_password'] # новая версия
Убедитесь, что вы не включаете app_config.yml
в ваш репозиторий, хотя вы можете захотеть создать пример файла, который проверяется, просто чтобы показать образец того, что должно быть в нем. Когда вы развертываете свое приложение, убедитесь, что app_config.yml
хранится на сервере. Если вы используете стандартное развертывание Capistrano, поместите файл в общую папку и обновите задачу развертывания, чтобы создать симлинк на него в каталоге текущего релиза.