1

我想从迁移中调用一个雷神任务。有了 rake 我可以写

def self.up
  Rake::Task["db:rollback"].invoke
end

但我怎么能用雷神做到这一点?(thor 命令是“thor db:rollback”)(thor db:rollback不是一个选项,我希望看到输出并且脚本应该在错误时中止)

更新:从 Thorfile 调用迁移

它看起来像这样:

require 'active_record'
class Db < Thor
  desc "migrate", "description ..."
  def migrate
    ActiveRecord::Migrator.migrate(MIGRATIONS_PATH)
  end
end
4

1 回答 1

2

假设db:rollbackrollback的是类的任务Db,那么你可以这样做:

script = Db.new
script.invoke(:rollback)

您可以在文档中阅读更多内容:http ://rdoc.info/github/wycats/thor/master/Thor/Base/ClassMethods#start-instance_method

于 2010-11-11T14:21:14.587 回答