Question

J'ai écrit une application de rails qui a été fonctionne bien pendant un certain temps sans une base de données. Maintenant, je suis tomber la base de données d'enregistrement dans le mélange. Il ne fonctionne pas dans la production. Tout fonctionne très bien, bien sûr, sur mon Mac.

Voici l'environnement de production: - Ubuntu Hardy - Phusion passagers - Rails 2.3.2

MySQL sur la machine fonctionne bien.

Je le fichier database.yml avec les informations correctes. Je peux courir les migrations sans problème:

rake db:migrate RAILS_ENV=production

La base de données est mise à jour correctement.

Alors, je frappe tmp / redémarrage et cliquez sur le site. Je suis l'erreur 500, mais rien n'a été écrit dans le journal de production (très bizarre). Donc, j'ai vérifié le journal apache, et je reçu ce message:

!!! Le pilote mysql.rb fourni a été retiré de Rails 2.2. S'il vous plaît installer la pierre précieuse mysql et essayez à nouveau. Gem install mysql

J'ai installé la pierre précieuse MySQL (version 2.7). Je suis toujours à obtenir cette erreur.

Quand je change la configuration de base de données de production pour pointer vers une base de données SQLite factice, tout fonctionne bien. Quand je le change à la configuration MySQL, je reçois le même message d'erreur.

Je suis tout à fait d'idées, et je souhaite que ce serait tout simplement travailler. Je tire mes cheveux, et je l'apprécie grandement toute aide que vous pouvez fournir. J'ai inclus tout ce que je pouvais penser, mais s'il vous plaît laissez-moi savoir si plus d'information serait utile.

Merci!

Jason

Était-ce utile?

La solution

figured it out. Woo Hoo!

Résumé: (! Mise à jour, merci Hongli) Ruby Enterprise Edition a son propre ensemble de pierres précieuses. Même si je mettais la pierre précieuse, il n'a pas été celui que passager était en train de lire.

Voilà comment je me suis dit que sur:

>> /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

Alors, je l'ai remis en marche par exemple, et cela a fonctionné.

Autres conseils

Butler @ Jason. Je n'ai pas assez réputation de commentaires, donc je vais le poster comme une réponse à la place

Il est pas Phusion passager qui a son propre ensemble de pierres précieuses, il est Ruby Enterprise Edition. Ceci est en fait documenté et expliqué sa raison: http://www.rubyenterpriseedition.com/documentation. html # _how_ree_installs_itself_into_the_system

Avez-vous essayé d'installer le bijou mysql via la commande sudo?

J'ai reçu cette erreur aussi. Vous ne pouvez pas simplement gem install mysql sans pointer à votre fichier mysql_config comme:

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

Je devais installer MySQL à partir macports parce que je n'ai pas les en-têtes disponibles sur mon système. J'utilisais MAMP priorly.

Macports installés / opt donc mon chemin mysql-config est / opt / local / bin / mysql_config5

Le répertoire bin mysql dans le chemin de l'utilisateur en cours d'exécution dans la production Rails?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top