J'ai créé une nouvelle application Ruby on Rails (première application sur laquelle je travaille dans Rails 3), et pour une raison inconnue, mon application semble être confuse quant à l'environnement dans lequel elle devrait fonctionner (à moins que je ne sois confuse) . Lorsque je lance rake db:create
, il crée à la fois les bases de données "myapp_development" et "myapp_test". Lorsque je lance ensuite rake db:drop
, il supprime la base de données de développement, mais pas la base de données de test.Rails app confus au sujet de l'environnement?
Que se passe-t-il?
Edit 1: Voici ce que mon fichier database.yml ressemble:
development:
adapter: mysql
database: myapp_development
username: root
password:
# 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: myapp_test
username: root
password:
production:
adapter: mysql
database: myapp_production
username: root
password:
Edit 2: Essayé recréer une nouvelle application à partir de zéro, et ont toujours la même question. Voici ce que j'ai fait.
1. Création d'une nouvelle application Rails:
rails new myapp
2. Edité mon Gemfile:
source 'http://rubygems.org'
gem 'rails', '3.0.6'
gem 'mysql', '2.8.1'
# Bundle the extra gems:
gem 'warden', '1.0.3'
gem 'devise', '1.2.1'
gem 'geokit'
# Bundle gems for the local environment. Make sure to
# put test-only gems in this group so their generators
# and rake tasks are available in development mode:
group :development, :test do
gem 'ruby-debug'
end
3. Edité mon database.yml:
development:
adapter: mysql
database: myapp_development
username: root
password:
host: localhost
# 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: myapp_test
username: root
password:
host: localhost
production:
adapter: mysql
database: myapp_production
username: root
password:
host: localhost
4. Exécution rake db:create
à ce p oint crée à la fois myapp_development
et myapp_test
. Si je continue à exécuter rake db:drop
suivi de rake db:create
, j'obtiens un avertissement de ligne de commande indiquant que «myapp_test existe déjà» puisque la suppression supprime seulement myapp_development
, mais le create tente de créer des bases de données de développement et de test.
Je suis confronté exactement au même problème. J'utilise rake db: create et rails crée à la fois des schémas de développement et de test. Quand je lance rake db: drop il ne laisse tomber que le schéma de développement. C'est certainement un problème de configuration de l'environnement car il fonctionne correctement sur une machine (un macos snow léopard) mais pas sur ma nouvelle machine (un macos lion). J'essaye toujours de comprendre les différences entre les envs des deux machines qui pourraient causer ce comportement. Toute astuce est appréciée. Va poster si je trouve quelque chose. –
Je n'ai jamais trouvé de solution à ce problème, alors je serais heureux de savoir si vous vous en êtes rendu compte! –