Comment obtenir des passagers Phusion, MySQL et Rails pour jouer bien dans la production
-
23-08-2019 - |
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
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?