从命令行,我可以运行
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#系统)。