Невозможно открыть консоль рельсов: производственная база данных не настроена, устанавливается установление_подключения ActiveRecord:: AdapterNotSpecified

Мое приложение работает очень хорошо в производстве - по крайней мере, часть веб-сайта. Проблема возникает только при SSH в моем VPS и делает "рельсы 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.

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

Ответы

Ответ 1

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

ruby script/console production

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

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

Ответ 2

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

bundle exec rails console production

Ответ 3

@Shadwell является правильным, однако, если вы после последовательного синтаксиса, вы можете установить RAILS_ENV в начале, как это:

RAILS_ENV=production rails console