从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