Сообщение об ошибке: неизвестная база данных «someweb_production» (Mysql2 :: Error) - PullRequest
0 голосов
/ 13 марта 2012

Я пытаюсь запустить это веб-приложение Ruby on Rails с Apache, используя Phusion Passenger. Я уже настроил файл httpd.conf.

У меня также есть другое приложение, которое работает с командой 'rails server' и подключается к базе данных разработки. Однако я не понимаю, почему приложение, которое работает с apache, пытается подключиться к производственной базе данных, которую я еще не создал, вместо разработки, как и должно быть.

Что мне нужно настроить, чтобы приложение Ruby on Rails работало как разработка?

Ответы [ 2 ]

0 голосов
/ 15 марта 2012

Проблема заключалась в том, что я не включил следующие строки в файл конфигурации Apache:

RailsEnv development
RackEnv development
0 голосов
/ 13 марта 2012

Apache с Phusion обеспечивают среду веб-сервера производственного уровня, rails server (WEBrick) - простой веб-сервер, позволяющий проводить локальные тесты.Вы обычно используете один или другой на данном компьютере.Но не всегда: -)

Но чтобы ответить на ваш вопрос, какая база данных используется Rails, определяется переменной RAILS_ENV, которая по умолчанию является одной из production, development или test.

Когда вы создаете новое приложение rails, в файле app/config/database.yml создается конфигурация базы данных по умолчанию - есть отдельные разделы, которые предоставляют необходимые параметры для подключения к вашей базе данных.Другие специфичные для среды конфигурации могут быть указаны либо в environment.rb, либо в app/config/environments/<name>.rb.

В вашей конфигурации Passenger вы можете установить переменную RAILS_ENV, как описано здесь http://www.modrails.com/documentation/Users%20guide%20Apache.html#rails_env.

Iтакже осознал также, что похоже, что Passenger ищет продукт (ожидая, что имя БД будет someweb_production) - скорее всего, вам нужно запустить bundle exec rake db:migrate в производственной среде, чтобы (создать и) инициализировать базу данных.В этом случае вам может также потребоваться передать параметр среды.

Для вашей локальной конфигурации (rails server) сервер будет искать переменную среды оболочки с именем RAILS_ENV, а также вы можете передать определенную средув командной строке, например, rails server --environment=development.Я думаю, что если не указано иное, сервер rails по умолчанию development.

...