фонPassenger Игнорирование RAILS_ENV
У меня есть файл ENV с различными переменными зависит от моего приложения Rails, в том числе RAILS_ENV, которая инициализируется на развитие в этом файле. У меня также есть файл database.yml
, определяющий соединения БД для моей среды (ниже). Когда я запускаю консоль рельсов, все выглядит так, как должно. Проверка 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: база данных «прод» не существует
Очевидно, что сообщение об ошибке, является точной, но не отражает то, что я хотел бы ожидать, происходит
..Я предполагаю, что это проблема с пассажиром/Apache, так как запуск рельсов консоли все радует.
ПРИМЕЧАНИЕ: Я видел, как это возникало в других сообщениях, поэтому нет - переменная среды DATABASE_URL
плавает вокруг переопределения вещей от database.yml
.
Что я Пробовал
.bashrc
: Passenger is supposed to source the bashrc for the user apache is running as, который, в свою очередь, является установка на источник соответствующий файл 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
Huh. Это сделал трюк. Не знал о нотации, которую вы использовали с общим блоком. – Dan