如何判断rake db:migrate和rake db:seed是否成功

时间:2013-10-09 18:37:49

标签: ruby-on-rails ruby schema seed dbmigrate

Ruby rake db:由于执行db:abort_if_pending_migrations导致种子中止,但我认为所有迁移都是成功的。

这是我运行rake db:migrate --trace

时输出的最后一部分
    ** Invoke db:load_config (first_time)
    ** Execute db:load_config
    ** Execute db:migrate
    ** Invoke db:_dump (first_time)
    ** Execute db:_dump
    ** Invoke db:schema:dump (first_time)
    ** Invoke environment 
    ** Invoke db:load_config 
    ** Execute db:schema:dump

我认为这意味着它成功了(我没有看到任何中止)?

然后当我运行rake db:seed --trace时我得到(总结):

    ** Invoke db:seed (first_time)
    ** Execute db:seed
    ** Invoke db:abort_if_pending_migrations (first_time)
    ** Invoke environment (first_time)
    ** Execute environment
    loading plugins

(插件加载没有错误)然后:

    ** Execute db:abort_if_pending_migrations

这是否意味着迁移和种子正常工作? 谢谢你的时间和输入!

1 个答案:

答案 0 :(得分:5)

如果它没有中止,它就成功了。拿一个look at the code

# desc "Raises an error if there are pending migrations"
task :abort_if_pending_migrations => :environment do
  pending_migrations = ActiveRecord::Migrator.open(ActiveRecord::Migrator.migrations_paths).pending_migrations

  if pending_migrations.any?
    puts "You have #{pending_migrations.size} pending #{pending_migrations.size > 1 ? 'migrations:' : 'migration:'}"
    pending_migrations.each do |pending_migration|
      puts '  %4d %s' % [pending_migration.version, pending_migration.name]
    end
    abort %{Run `rake db:migrate` to update your database then try again.}
  end
end

如果没有任何待处理的迁移,它实际上什么都不做。