Не удается открыть консоль rails: производственная база данных не настроена, установление соединения вызывает ActiveRecord :: AdapterNotSpecified - PullRequest
15 голосов
/ 07 сентября 2010

Мое приложение прекрасно работает на производстве, по крайней мере, на веб-сайте. Проблема появляется только тогда, когда я SSH подключаюсь к своему VPS и выполняю команду "rails c RAILS_ENV = production". Консоль отлично работает в режиме разработки.

Раньше у меня была эта проблема (или, по крайней мере, та, которая похожа на это), и я исправил ее, добавив «reconnect: true» в database.yml - но на этот раз она не устранилась. Вот начало вывода ошибки:

/home/tour/.rvm/gems/ruby-1.9.2-p0/gems/activerecord-3.0.0/lib/active_record/connection_adapters/abstract/connection_specification.rb:62:in `establish_connection': RAILS_ENV=production database is not configured (ActiveRecord::AdapterNotSpecified)
from /home/tour/.rvm/gems/ruby-1.9.2-p0/gems/activerecord-3.0.0/lib/active_record/connection_adapters/abstract/connection_specification.rb:55:in `establish_connection'
from /home/tour/.rvm/gems/ruby-1.9.2-p0/gems/activerecord-3.0.0/lib/active_record/railtie.rb:59:in `block (2 levels) in <class:Railtie>'
from /home/tour/.rvm/gems/ruby-1.9.2-p0/gems/activesupport-3.0.0/lib/active_support/lazy_load_hooks.rb:36:in `instance_eval'
from /home/tour/.rvm/gems/ruby-1.9.2-p0/gems/activesupport-3.0.0/lib/active_support/lazy_load_hooks.rb:36:in `execute_hook'
from /home/tour/.rvm/gems/ruby-1.9.2-p0/gems/activesupport-3.0.0/lib/active_support/lazy_load_hooks.rb:26:in `on_load'
from /home/tour/.rvm/gems/ruby-1.9.2-p0/gems/activerecord-3.0.0/lib/active_record/railtie.rb:57:in `block in <class:Railtie>'
from /home/tour/.rvm/gems/ruby-1.9.2-p0/gems/railties-3.0.0/lib/rails/initializable.rb:25:in `instance_exec'
from /home/tour/.rvm/gems/ruby-1.9.2-p0/gems/railties-3.0.0/lib/rails/initializable.rb:25:in `run'
from /home/tour/.rvm/gems/ruby-1.9.2-p0/gems/railties-3.0.0/lib/rails/initializable.rb:50:in `block in run_initializers'

А для моих настроек производственной базы данных:

production:
  adapter: mysql
  encoding: utf8
  database: tour_production
  pool: 5
  username: [user]
  password: [password]
  socket: /var/run/mysqld/mysqld.sock
  reconnect: true

Я не могу понять, почему это работает через пассажира, но не удача с консолью. В любом случае, я использую Rails 3, Ruby 1.9.2, Passenger и Nginx.

Я занимался мелочами через Раннера, что раздражает. Я бы хотел исправить это. Так что большое спасибо за любую помощь.

Ответы [ 4 ]

50 голосов
/ 07 сентября 2010

Когда вы используете консоль, вы задаете среду в качестве первого аргумента, а не в качестве переменной среды. Итак:

ruby script/console production

загрузит производственную среду.

Ваше сообщение об ошибке вызвано тем, что он ищет среду RAILS_ENV=production, а не просто production.

42 голосов
/ 07 января 2012

Самый последний Rails 3 способ сделать это просто:

bundle exec rails console -e production
17 голосов
/ 28 апреля 2011

@ Шадвелл верен, однако, если вы используете последовательный синтаксис, вы можете установить RAILS_ENV в начале так:

RAILS_ENV=production rails console
0 голосов
/ 09 июня 2013

Я решил с помощью прогона:

RAILS_ENV=production bundle exec rails c

подробнее о ссылке или stackoverflow

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...