2016-03-21 9 views
1

Получение ошибки в /log/production.log при выполнении запроса попасть на корень сайта:ActiveRecord пытается подключиться к неправильной базе данных с помощью rbenv

I, [2016-03-21T02:21:38.485274 #12750] INFO -- : 
    Started GET "/" for 174.xx.xxx.xxx at 2016-03-21 02:21:38 -0600 
F, [2016-03-21T02:21:38.493250 #12750] FATAL -- : 
    ActiveRecord::NoDatabaseError (FATAL: database "y" does not exist) 

Это говорит database "y" does not exist. Во-первых, y не является базой данных, поэтому я знаю, что ее не существует.

Во-вторых, database.yml указывает ydb как базу данных, к которой приложение должно подключиться - не y.

конфигурации/database.yml:

production: 
    adapter: postgresql 
    encoding: utf8 
    host: <%= ENV['Y_PG_HOST'] %> 
    database: <%= ENV['Y_PG_DB'] %> 
    username: <%= ENV['Y_PG_USER'] %> 
    password: <%= ENV['Y_PG_PASS'] %> 

Используя rbenv объявить окр вары:

.rbenv-вары

Y_PG_HOST=localhost 
    Y_PG_DB=ydb 
    Y_PG_USER=y 
    Y_PG_PASS=********* 

Update

благодарственное s to @Meshpi, похоже, что проблема возникает rbenv. Когда env vars размещаются непосредственно в database.yml, сервер загружает сайт, как ожидалось.

Что вызывает недоумение то, что от echo $Y_PG_DB, оболочка возвращает ydb, а не y.

+0

Как вы используете сервер? Он работает, если сначала экспортировать vars с помощью 'export $ (cat .rbenv-vars | xargs)'? – toomanyredirects

+0

k, попробовал это и не изменил сообщение об ошибке. Кроме того, я использую Passenger + Nginx. Кроме того, я ничего не делал с файлами 'postgresql.conf' или' pg_hba.conf' - я оставил их нетронутыми, как установлено. – singularity

+1

Вы пытались исключить rbenv как виновника, установив значения непосредственно в вашей базе данных.yml вместо переменных окружения? – meshpi

ответ

1

Разработка работала отлично. Даже rails console production на сервере работал с app.get '/' без ошибок базы данных. Однако, когда вы отправляете запрос через браузер, весь ад сломался.

Проблема в том, что инструкции, которые Phusion Passenger дает в конце установки, не совсем совместимы с rbenv-vars.

В конце установки пассажирской, вы проинструктированы добавить следующее nginx.conf:

passenger_root /home/user/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/passenger-5.0.26; 
passenger_ruby /home/user/.rbenv/versions/2.3.0/bin/ruby; 

Однако, то, как @mislav pointed out, сценарии Рубина будут раскручиваются процессы рубина непосредственно вместо через rbenv.

Чтобы это исправить, то, что должно быть в nginx.conf вместо этого:

passenger_root /home/user/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/passenger-5.0.26; 
passenger_ruby /home/user/.rbenv/shims/ruby; 

Надеется, что это помогает сэкономить еще ничего не подозревающую душу: D