Est-ce que
rake db:schema:dump
recréer schema.rb
des migrations ou de la base de données elle-même?
La réponse est simple: à partir de la base de données.
Soit dit en passant - lorsque vous jetez un œil au code source des tâches db: * (.../activerecord/railties/databases.rake), vous pouvez voir que les tâches de migration appellent schema: dump après l'exécution
desc "Migrate the database (options: VERSION=x, VERBOSE=false)."
task :migrate => :environment do
ActiveRecord::Migration.verbose = ENV["VERBOSE"] ? ENV["VERBOSE"] == "true" : true
ActiveRecord::Migrator.migrate("db/migrate/", ENV["VERSION"] ? ENV["VERSION"].to_i : nil)
Rake::Task["db:schema:dump"].invoke if ActiveRecord::Base.schema_format == :Ruby
end
La migration fonctionne donc de la même manière qu'elle modifie la base de données et alors génère le fichier schema.rb.