如何将db:migrate:up作为另一个rake任务的一部分来调用



从命令行,我可以运行

rake db:migrate:up VERSION=20120123160700

这将迁移到特定的版本。

我希望能够从rake任务向上迁移(但不能超过特定版本),最好使用db:migrate:up。

我尝试了以下操作,并将错误消息放在下面:

Rake::Task['db:migrate:up VERSION=20120123160700'].invoke

不知道如何构建任务"db:migrate:up VERSION=20111208105833"

Rake::Task['db:migrate:up'].invoke('VERSION=20120123160700')

版本是必需的

Rake.application.invoke_task("db:migrate:up[VERSION=20120123160700]"

版本是必需的

Rake.application.invoke_task("db:migrate:up[VERSION=20120123160700]"

不知道如何构建任务"db:migrate:up VERSION=20111208105833"

我怎样才能做到这一点?

这可能不是更好的解决方案,但它应该可以工作。你可以这样做:

  ActiveRecord::Migrator.run(:up, ActiveRecord::Migrator.migrations_path, 20120123160700)
  Rake::Task["db:schema:dump"].invoke if ActiveRecord::Base.schema_format == :ruby

您可以在此处查看来源:https://github.com/rails/rails/blob/621df2a1ec01b77f7b052b3571f3c696f0443fea/activerecord/lib/active_record/railties/databases.rake在第163行。

我相信你可以做到:

ENV["VERSION"] = "20120123160700"
Rake::Task["db:migrate:up"].invoke

或者,你可以做:

system("rake db:migrate:up VERSION=20120123160700")

(我不清楚这是否适用于Windows,因为它使用的是Kernel#系统)。

相关内容

  • 没有找到相关文章

最新更新