73 votes

Exécuter des migrations depuis la console rails

Existe-t-il un moyen d'exécuter des commandes rake pour db:migrate et db:rollback sur la console ?

C'est nul d'attendre que l'environnement des rails se charge !

108voto

sketchfemme Points 3377

Dans la console :

 ActiveRecord::Migration.remove_column :table_name, :column_name

Pour mettre à jour votre schema.rb après avoir exécuté les migrations depuis la console, vous devez exécuter rails db:migrate

81voto

Benoit Garret Points 8292

Rails <= 4

Cela vous permettra de migrer sans recharger tout l'environnement rails :

 ActiveRecord::Migrator.migrate "db/migrate"

et restauration :

 # 3 is the number of migration to rollback, optional, defaults to 1
ActiveRecord::Migrator.rollback "db/migrate", 3

Rails >= 5 (merci à @gssbzn, sa réponse est ci-dessous)

Migrer :

 ActiveRecord::MigrationContext.new("db/migrate").migrate

Et retour en arrière :

 # 3 is the number of migration to rollback, optional, defaults to 1
ActiveRecord::MigrationContext.new("db/migrate").rollback 3

30voto

kizzx2 Points 6919

Une autre façon que je trouve plus pratique d'exécuter une commande de migration à partir de la console est la suivante :

 ActiveRecord::Schema.define do
  create_table :foo do |t|
    t.string  :bar
    t.timestamps
  end
end

Cela présente l'avantage que le contenu à l'intérieur du bloc est compatible avec un simple copier-coller de contenu aléatoire à partir d'un vrai fichier de migration / schema.rb .

13voto

Gus Points 141

Pour les rails 5.2, la réponse acceptée a été supprimée et remplacée par

 ActiveRecord::MigrationContext.new("db/migrate").migrate

Veuillez noter que cela peut également changer pour les futures versions de rails car ils fonctionnent pour ajouter plusieurs connexions de base de données

10voto

Tom Carr Points 81

Pour les rails 5 et 6 :

 ActiveRecord::Base.connection.migration_context.migrate

Pour les rails 3 et les rails 4 :

 ActiveRecord::Migrator.migrate 'db/migrate'

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X