从迁移中运行Thor任务

时间:2010-11-11 14:12:31

标签: ruby rake invoke thor

我想从迁移中调用一个thor任务。 用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

1 个答案:

答案 0 :(得分:2)

假设db:rollback引用rollback类的Db任务,那么您可以这样做:

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

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