Фон
У меня есть файл env с различными переменными, зависящими от моего приложения Rails, включая RAILS_ENV, который инициализируется для разработки в этом файле. У меня также есть database.yml
файл, определяющий подключения к БД для моих сред (см. Ниже). Когда я запускаю консоль rails, все выглядит так, как должно. Проверка Rails.configuration.database_configuration[Rails.env]
возвращает следующее:
{"adapter"=>"postgresql",
"encoding"=>"utf8",
"database"=>"dev",
"username"=>"rails",
"password"=>"***",
"host"=>"localhost",
"pool"=>5,
"timeout"=>5000}
Однако, когда я пытаюсь посетить приложение, я получаю 502 и регистрирую следующую ошибку:
Исключение ActiveRecord :: NoDatabaseError в объекте приложения Rack (FATAL: база данных "prod" не существует.
Очевидно, что сообщение об ошибке является точным, но не отражает того, что я ожидал увидеть.
Я предполагаю, что это проблема Passenger / Apache, так как с консолью rails все в порядке.
ПРИМЕЧАНИЕ. Я видел это в других сообщениях, поэтому нет - нет переменной среды DATABASE_URL
, плавающей вокруг переопределения вещей из database.yml
.
Что я пробовал
.bashrc
: Пассажир должен использовать bashrc для пользователя, запущенного как apache, который, в свою очередь, настроен на получение соответствующего файла env./etc/sysconfig/httpd
: Я пробовал вручную получить файл непосредственно из конфигурации Apache и проверял, выгружая env в файл при запуске скрипта, что правильные значения вносятся в env, однако это тоже не меняет нарушенного поведения.
database.yml
development:
adapter: postgresql
encoding: utf8
database: dev
username: rails
password: <%= ENV['RAILS_DB_PWD'] %>
host: <%= ENV['RAILS_DB_HOST'] %>
pool: 5
timeout: 5000
# Warning: The database defined as "test" will be erased and
# re-generated from your development database when you run "rake".
# Do not set this db to the same as development or production.
test:
adapter: postgresql
encoding: utf8
database: test
username: rails
password: <%= ENV['RAILS_DB_PWD'] %>
host: <%= ENV['RAILS_DB_HOST'] %>
pool: 5
timeout: 5000
production:
adapter: postgresql
encoding: utf8
database: prod
username: rails
password: <%= ENV['RAILS_DB_PWD'] %>
host: <%= ENV['RAILS_DB_HOST'] %>
port: 5432
pool: 5
timeout: 5000