Esiste un modo per eseguire i comandi di rake per db: migrate e db: rollback sulla console?Eseguire migrazioni dalla console di rails
Fa schifo aspettare che l'ambiente delle rotaie si carichi!
Esiste un modo per eseguire i comandi di rake per db: migrate e db: rollback sulla console?Eseguire migrazioni dalla console di rails
Fa schifo aspettare che l'ambiente delle rotaie si carichi!
Questo vi permetterà di migrare senza ricaricare tutto l'ambiente rotaie:
ActiveRecord::Migrator.migrate "db/migrate"
e rollback:
# 3 is the number of migration to rollback, optional, defaults to 1
ActiveRecord::Migrator.rollback "db/migrate", 3
Ho creato un metodo nel mio file .irbrc che esegue le migrazioni, quindi ricarica la console:
def migrate
if defined? Rails::Console # turn off info logging for Rails 3
old_log_level = ActiveRecord::Base.logger.try(:sev_threshold)
ActiveRecord::Base.logger.sev_threshold = Logger::WARN
end
reload! && migations_ran = true if ActiveRecord::Migrator.migrate(Rails.root.join("db/migrate")).any?
ActiveRecord::Base.logger.sev_threshold = old_log_level if defined? old_log_level
migations_ran ||= nil # useful exit status
end
Vedi l'intero file qui: https://gist.github.com/imme5150/6548368
Nella console:
ActiveRecord::Migration.remove_column :table_name, :column_name
Perfetto per eseguire i comandi di migrazione. Grazie. –
Dopo aver effettuato questa operazione, è necessario aggiornare manualmente lo schema. –
@WestonGanger come? – nruth
Un altro modo che trovo più elegante basta eseguire qualche comando di migrazione dalla console è questo:
ActiveRecord::Schema.define do
create_table :foo do |t|
t.string :bar
t.timestamps
end
end
Questo ha il vantaggio che il contenuto all'interno del blocco è compatibile con solo copia e incolla contenuti casuali da un file di migrazione reale/schema.rb
.
Si noti che se si sta utilizzando Mongoid, è lo stesso: 'Mongoid :: Migrator.migrate "db/migrare"' –
Questo è perfetto per aggiungere alla vostra test_helper.rb in Rails apps –
errore ricevuto, bash: ActiveRecord :: Migrator.migrate: comando non trovato ... utilizzando Rails 2.3.18, ruby 1.9.3p551, Ora eseguito dopo aver eseguito il comando all'interno della console di rails. –