Как заставить Phusion Passenger, MySQL и Rails хорошо играть в производстве - PullRequest
4 голосов
/ 20 мая 2009

Я написал приложение rails, которое некоторое время нормально работало без базы данных. Теперь я добавляю базу данных регистрации в смесь. Это не работает в производстве. Все отлично работает, конечно, на моем Mac.

Вот производственная среда: - Убунту Харди - Phusion Passenger - Рельсы 2.3.2

MySQL на машине работает нормально.

У меня есть файл database.yml с правильной информацией. Я могу запустить миграцию без проблем:

rake db:migrate RAILS_ENV=production

База данных корректно обновляется.

Итак, я нажал tmp / restart и зашел на сайт. Я получил ошибку 500, но ничего не было записано в журнал производства (очень странно). Итак, я проверил журнал apache и получил это сообщение:

!!! Связанный драйвер mysql.rb был удален из Rails 2.2. Пожалуйста, установите gem mysql и попробуйте снова: gem install mysql.

Я установил гем MySQL (версия 2.7). Я все еще получаю эту ошибку.

Когда я изменяю конфигурацию производственной базы данных, чтобы указать на фиктивную базу данных sqlite, все работает нормально. Когда я изменяю его обратно на конфигурацию MySQL, я получаю то же сообщение об ошибке.

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

Спасибо!

Jason

Ответы [ 5 ]

8 голосов
/ 20 мая 2009

Разобрался. Woo Hoo!

Краткое описание: Ruby Enterprise Edition (обновление, спасибо Hongli!) Имеет собственный набор драгоценных камней. Даже при том, что я обновлял драгоценный камень, это был не тот, кого читал Пассажир.

Вот как я это понял:

>> /usr$ whereis gem

gem: /usr/bin/gem /usr/bin/gem1.8 /opt/ruby-enterprise-1.8.6-20090201/bin/gem

>> /usr$ cd /opt/ruby-enterprise-1.8.6-20090201/bin/

>> /opt/ruby-enterprise-1.8.6-20090201/bin$ ls -l

total 2624
-rwxr-xr-x 1 root root    3907 2009-03-26 14:47 erb
-rwxr-xr-x 1 root root     813 2009-03-26 14:47 gem
-rwxr-xr-x 1 root root     349 2009-03-26 14:47 irb
-rwxr-xr-x 1 root root     386 2009-03-26 14:47 passenger-config
-rwxr-xr-x 1 root root     402 2009-03-26 14:47 passenger-install-apache2-module
-rwxr-xr-x 1 root root     396 2009-03-26 14:47 passenger-make-enterprisey
-rwxr-xr-x 1 root root     392 2009-03-26 14:47 passenger-memory-stats
-rwxr-xr-x 1 root root     392 2009-03-26 14:47 passenger-spawn-server
-rwxr-xr-x 1 root root     386 2009-03-26 14:47 passenger-status
-rwxr-xr-x 1 root root     391 2009-03-26 14:47 passenger-stress-test
-rwxr-xr-x 1 root root     366 2009-03-26 14:47 rackup
-rwxr-xr-x 1 root root     367 2009-03-26 14:47 rails
-rwxr-xr-x 1 root root     364 2009-03-26 14:47 rake
-rwxr-xr-x 1 root root    1560 2009-03-26 14:47 rdoc
-rwxr-xr-x 1 root root      64 2009-03-26 14:46 ree-version
-rwxr-xr-x 1 root root    1516 2009-03-26 14:47 ri
-rwxr-xr-x 1 root root 2609905 2009-03-26 14:46 ruby
-rwxr-xr-x 1 root root     178 2009-03-26 14:47 testrb

>> /opt/ruby-enterprise-1.8.6-20090201/bin$ ./gem list

*** LOCAL GEMS ***

actionmailer (2.3.2)
actionpack (2.3.2)
activerecord (2.3.2)
activeresource (2.3.2)
activesupport (2.3.2)
fastthread (1.0.5)
passenger (2.1.2)
postgres (0.7.9.2008.01.28)
rack (0.9.1)
rails (2.3.2)
rake (0.8.4)
sqlite3-ruby (1.2.4)

>> /opt/ruby-enterprise-1.8.6-20090201/bin$ ./gem install mysql

Building native extensions.  This could take a while...
Successfully installed mysql-2.7
1 gem installed

Затем я перезапустил экземпляр, и он заработал.

5 голосов
/ 21 мая 2009

@ Джейсон Батлер: У меня недостаточно репутации, чтобы комментировать, поэтому вместо этого я опубликую ее.

Это не Phusion Passenger, у которого есть свой набор драгоценных камней, это Ruby Enterprise Edition. Это на самом деле задокументировано, и его причина объяснена: http://www.rubyenterpriseedition.com/documentation.html#_how_ree_installs_itself_into_the_system

0 голосов
/ 20 мая 2009

Я также получил эту ошибку. Вы не можете просто установить gem mysql, не указывая его на файл mysql_config, например:

sudo gem install mysql -- --with-mysql-config=/path/to/user/local/mysql/bin/mysql_config

Мне пришлось установить mysql из macports, потому что в моей системе не было доступных заголовков. Я использовал MAMP ранее.

Macports установлен в / opt, поэтому мой путь к mysql-config был / opt / local / bin / mysql_config5

0 голосов
/ 20 мая 2009

Является ли каталог mysql bin по пути пользователя, работающего с Rails, в рабочей среде?

0 голосов
/ 20 мая 2009

Вы пытались установить самоцвет mysql через sudo?

...