У меня есть следующий конфиг в моем рабочем файле config/database.yml
. Я заметил, что это не работает - это происходит с ошибкой аутентификации пароля postgres.
Я также заметил, что если я заменим <%= ENV['SOME_PASSWORD'] %>
на действительный пароль, он будет работать нормально.
production:
adapter: postgresql
host: localhost
database: some_database
username: some_user
password: <%= ENV['SOME_PASSWORD'] %>
Однако , я вижу это только на моем рабочем сервере Ubuntu. Эта вставка переменной окружения работает на моем устройстве OS X.
Просто любопытно, почему это так - почему это не работает в Ubuntu? Если я вхожу в интерактивный сеанс ruby на производственной коробке через irb
и набираю <%= ENV['SOME_PASSWORD'] %>
, он выводит пароль, как и ожидалось.
Я проверял это несколькими способами, и я уверен, что это проблема. Я просто не уверен, почему это происходит. Я использую Ruby Enterprise Edition для моего переводчика ruby в обоих местах. Просто кажется странным, и мне бы очень хотелось, чтобы мой пароль полностью не отображался в моем конфигурационном файле - я просто чувствую, что мне нужно использовать немного другой синтаксис для производственного сервера, но я не уверен, что это за синтаксис может быть.
ПРИМЕЧАНИЕ : Каждая другая найденная мной статья в Интернете, посвященная проблемам аутентификации Rails postgres, в какой-то момент говорит вам изменить ваш файл pg_hba.conf
на режим trust
, которая не только игнорирует проблему, обходя аутентификацию, она небезопасна и не является правильным решением, если вы заботитесь о безопасности.