2010-03-21 2 views
1

Est-ce que quelqu'un a vu où script/console et script/serveur charge deux bases de données différentes (bien que les deux rapportent en utilisant la même chose)? Voici la première sortieScript/console Ruby et script/serveur Ruby utilisant deux DB différents?

$ script/server 
=> Booting WEBrick 
=> Rails 2.3.5 application starting on http://0.0.0.0:3000 
=> Call with -d to detach 
=> Ctrl-C to shutdown server 
[2010-03-21 15:54:05] INFO WEBrick 1.3.1 
[2010-03-21 15:54:05] INFO ruby 1.8.7 (2010-01-10) [i386-mingw32] 
[2010-03-21 15:54:05] INFO WEBrick::HTTPServer#start: pid=7148 port=3000 

Aucune erreur. Je cours alors mon code standard pour entrer un formulaire - aucuns problèmes.

Vérification de la base de données Dev (.yml en bas):

mysql> select * from books; 
[...] 
| 712 | Book | Book Name | 2010-03-21 22:29:22 | 2010-03-21 22:29:22 | 
[...] 
712 rows in set (0.00 sec) 

Le code sauvé CLAIREMENT il y a quelques secondes

Et est maintenant ici la sortie du script/console:

$ script/console 
Loading development environment (Rails 2.3.5) 
>> Book.all 
=> [] 

Rien. De plus, lors d'une inspection plus poussée, il utilise la base de données de production, mais je n'arrive pas à comprendre pourquoi. Des pensées ici? Toutes les consoles ont été fermées et rouvertes.

MISE À JOUR: fichier .yml demandé (ne peut pas voir comment il serait utile (nom d'utilisateur et mot de passe sont les mêmes pour chacun)) -

development: 
    adapter: mysql 
    database: BooksDBdev 
    username: <user name> 
    password: <long string> 
    timeout: 5000 

# Warning: The database defined as "test" will be erased and 
# re-generated from your development database when you run "rake". 
# Do not set this db to the same as development or production. 
test: 
    adapter: mysql 
    database: BooksDBtest 
    username: <user name> 
    password: <long string> 
    timeout: 5000 

production: 
    adapter: mysql 
    database: BooksDB 
    username: <user name> 
    password: <long string> 
    timeout: 5000 

Mise à jour 2: Voici la sortie quand je force l'environnement de la console.

$ script/console development 
Loading development environment (Rails 2.3.5) 
>> Book.all 
=> [] 
>> exit 

$ ruby script/console development 
Loading development environment (Rails 2.3.5) 
>> Book.all 
=> [] 

Juste pour info, je n'ai pas spécifié RAILS_ENV dans mes variables d'environnement.

+0

Pouvez-vous être plus précis? _Que utilise la base de données de production? Vous avez dit que vous avez coché 'la base de données de dev' ... Peut-être coller votre database.yml? – rfunduk

+0

Terminé ... la commande 'script/console ruby' utilise la base de données de production, bien qu'elle ait indiqué utiliser la base de données de développement. La commande 'script/serveur ruby' utilise la base de développement, comme il se doit. – aronchick

+0

Que se passe-t-il si vous utilisez explicitement le nom d'environnement? Par exemple, le développement de scripts/serveurs et le développement de scripts/consoles – Corey

Répondre

-1

Nom du modèle pluri-formaté? Yikes! Avez-vous un autre modèle appelé Livre ou quelque chose?

+0

Pas de vrais noms :) ... ce n'est pas pluriel irl. – aronchick

0

Exécutez-les en même temps, dans différents terminaux? Si c'est le cas, vous devrez peut-être faire reload! dans votre console pour que les modifications de la base de données apparaissent.

+0

Même machine, différents terminaux ... oui - mais j'ai fermé tous les terminaux plusieurs fois. Quoi qu'il en soit, ce n'est pas un changement de modèle - comme vous pouvez le voir, c'est l'accès aux données qui est foiré (accès à la mauvaise base de données). – aronchick

+0

Oh. Essayez de commenter les sections de production et de test de votre fichier .yml - peut-être que cela vous donnera une erreur utile. – Ben

+0

Ouais, quand je le fais, le script/console ruby ​​échoue! Comme je l'ai dit, bizarrement, même s'il prétend utiliser le développement, il semble utiliser la production. Mais pas le serveur! – aronchick