我要查看此rake任务的编写位置以及它如何找到要迁移到的db。
答案 0 :(得分:2)
此任务是ActiveRecord
的一部分。您可以在此处查看其定义位置:database_tasks.rb
基本上是任务调用ActiveRecord::Migrator
,它是负责将迁移应用于数据库的模块。
例如,如果您创建新的迁移并获得以下输出:
Running via Spring preloader in process 4675
invoke active_record
create db/migrate/20170621091940_create_user.rb
当您致电db:migrate
任务时,它会致电ActiveRecord::Migrator.migrate("db/migrate", 20170621091940)
并应用您的迁移。
答案 1 :(得分:1)
db:migrate
是一项佣金任务。 db:migrate task (内置的Rails支持程序)将搜索项目的db / migrate目录,并使用其中的文件更新数据库的架构。
当您运行db:migrate时,rails将检查名为schema_migrations的特殊表,该表包含应用于数据库的上次迁移的时间戳。它将存储已运行的迁移文件的时间戳。