从rails控制台运行迁移

有没有办法在控制台上运行rake命令db:migrate和db:rollback?

它吸收等待轨道环境加载!

这将允许您迁移而不重新加载整个rails环境:

ActiveRecord::Migrator.migrate "db/migrate" 

并回滚:

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

在控制台中:

 ActiveRecord::Migration.remove_column :table_name, :column_name 

另一种方式,我觉得更简单的运行一些从控制台迁移命令是这样的:

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

这样做的好处是块内的内容与从真正的迁移文件/ schema.rb复制和粘贴随机内容兼容。

你可以使用%x [command]

 %x[rake db:migrate] 

我在运行迁移的.irbrc文件中创build了一个方法,然后重新加载控制台:

 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 

看到整个文件在这里: https : //gist.github.com/imme5150/6548368