【发布时间】:2017-06-21 06:53:58
【问题描述】:
我想看看这个 rake 任务写在哪里以及它如何找到要迁移到的数据库。
【问题讨论】:
标签: ruby-on-rails ruby rake rake-task
我想看看这个 rake 任务写在哪里以及它如何找到要迁移到的数据库。
【问题讨论】:
标签: ruby-on-rails ruby rake rake-task
此任务是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) 并应用您的迁移。
【讨论】:
ActiveRecord::Migrator 然后调用它的migrate 方法?这是正确的吗?
schema_migrations 哪些迁移已经执行。
db:migrate 是一个 rake 任务。 db:migrate 任务(一个内置的 Rails 支持程序) 将搜索您项目的 db/migrate 目录并使用其中的文件来更新数据库的架构。
当您运行 db:migrate 时,rails 将检查一个名为 schema_migrations 的特殊表,其中包含应用于数据库的最后一次迁移的时间戳。它将存储已运行的迁移文件的时间戳。
【讨论】: