2009-07-24 4 views
0

J'ai déployé une application Ruby on Rails en utilisant mod_rails et nginx sur Capistrano, et ça fonctionne parfaitement, mais j'ai un problème déconcertant.L'application Rails est déployée et fonctionne, mais la base de données MySQL est vide

Quand je lance la commande suivante sur le serveur:

SHOW TABLES IN application_production; 

MySQL retourne:

Empty set (0.00 sec) 

Je sais que l'information est en cours d'écriture à la base de données parce que je suis entré des données qui est enregistré. J'ai essayé de redémarrer l'application Rails et le serveur entier, ainsi que d'accéder au site à partir d'autres ordinateurs, et cela fonctionne parfaitement, mais la requête renvoie toujours un ensemble vide. Je suis complètement perplexe.

Quelqu'un a-t-il une idée de ce qui se passe? Merci!

Répondre

0

Bien sûr, 10 minutes après que je posterai la question que je le découvrir:

Je ne l'avais pas mis à jour mon fichier engagé database.yml à Mercurial avant déployé, alors quand il a tiré vers le bas le dernier changeset, la old database.yml (avec la base de données de production par défaut) a été utilisé. Pour cette raison, il utilisait une base de données SQLite dans mon dossier de projet au lieu de MySQL.

Erreur stupide! Morale: TOUJOURS s'assurer que vous vous engagez avant de vous déployer.

+0

Je ne stocke pas le fichier database.yml dans mon référentiel. Au lieu de cela, je SFTP le dans le répertoire shared/config et ensuite Capistrano crée un lien symbolique à partir de l'application Rails. –

+0

Y a-t-il un risque de sécurité à l'avoir dans le référentiel? Il n'y a que deux personnes qui travaillent sur le projet, et nous avons tous les deux le mot de passe, donc cela ne semble pas vraiment un problème. Est-ce que je manque quelque chose? –

2

Votre fichier database.yml a-t-il été configuré correctement pour l'environnement de production?

Questions connexes