Je développe une application RoR en utilisant une base de données PostgreSQL, la base de cette définition database.yml:Râteau comportement incohérent entre dev et test?
# PostGre databases
default: &default
host : localhost
adapter: postgresql
encoding: unicode
pool: 5
username: keyman
password: keymanApp
schema_search_path: "keyman"
development:
<<: *default
database: keyman_dev
test:
<<: *default
database: keyman_test
J'ai créé une petite routine Rake, donc je peux facilement tomber et créer ma base de données de postgreSQL, y compris le schéma que je travaille avec:
namespace :db do
desc 'Create database schemas before going for the first migration'
task init: ['db:drop','db:create'] do
ActiveRecord::Base.connection.execute("CREATE SCHEMA keyman AUTHORIZATION keyman")
puts 'Database initialised'
end
end
Quand je lance rake db: init, il est exécuté à la fois sur les environnements de dev et de test:
$ rake db:init
Dropped database 'keyman_dev'
Dropped database 'keyman_test'
Created database 'keyman_dev'
Created database 'keyman_test'
Database initialised
Mais le résultat n'est pas le même: le schéma 'keyman' est créé pour la base de données keyman_dev, mais pas pour la base de données keyman_test.
Je dois exécuter explicitement rake db: init RAILS_ENV = test pour obtenir le schéma créé sur la base de données de test.
Cela me semble étrange! Avez-vous une explication? Merci
Merci pour cette explication très claire, je ferai attention à cela dans mes futures tâches de ratissage. – user1185081