Я пытался получить доступ к своей производственной консоли на моем экземпляре ec2 как часть моей среды эластичного бобового стебля. Я могу получить доступ к консоли, но когда я запрашиваю объект, например. Wager.all, это дает мне эту ошибку:
[root @ ip-10-0-1-146 config] # bundle exec rails c -e production Загрузка производственной среды (Rails 5.2.4.2) irb (main): 001: 0 ›Wager.all Traceback (последний вызов последний) : PG :: ConnectionBad (fe_sendauth: пароль не указан)
Вот мой файл database.yml (нужно посмотреть производственную конфигурацию):
default: &default
adapter: postgresql
encoding: UTF-8
host: 'localhost'
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 10 } %>
test:
<<: *default
development:
<<: *default
url: <%= ENV['DATABASE_URL'] %>
database: <%= ENV['RDS_DB_NAME'] %>
username: <%= ENV['RDS_USERNAME'] %>
password: <%= ENV['RDS_PASSWORD'] %>
host: <%= ENV['RDS_HOSTNAME'] %>
port: <%= ENV['RDS_PORT'] %>
production:
<<: *default
url: <%= ENV['DATABASE_URL'] %>
database: <%= ENV['RDS_DB_NAME'] %>
username: <%= ENV['RDS_USERNAME'] %>
password: <%= ENV['RDS_PASSWORD'] %>
host: database-1.c76xg56p4vkw.us-east-2.rds.amazonaws.com
port: 5432
Раньше у меня были параметры хоста и порта, установленные для переменных среды, и это не удалось, потому что он не мог даже подключиться к хосту. Теперь, когда я жестко запрограммировал это, он не работает в той части, где требуется мой пароль. Я могу заставить это работать, жестко закодировав все, но я хочу использовать переменные env.
Несмотря на то, что я установил переменные среды в своей консоли эластичного бобового стебля, похоже, что консоль rails не может их получить. Однако похоже, что приложение обращается к этим переменным во время развертывания, поскольку оно может подключиться к моей базе данных.
Вещи, которые я пробовал:
Запуск 'erb config / database.yml', чтобы проверить, может ли erb распознать значения. Он возвращает пустые значения для всех полей, где у меня что-то указано в ‹% =%›. Таким образом, 'пароль: ‹% = ENV [' RDS_PASSWORD ']'%› будет выводиться как 'пароль:'.
Я сослался на это Документ AWS для настройки моего файла database.yml
Позвонили в службу поддержки клиентов AWS, и мы подтвердили, что экземпляр, похоже, знает о переменных среды. Эта команда '/ opt / elasticbeanstalk / bin / get-config environment' правильно выводит все переменные env. Однако сотрудник службы поддержки мало что знал о рельсах, поэтому не смог мне больше помочь.
ruby 2.5.8p224 (версия 67882 от 31.03.2020) [x86_64-linux]