我想从迁移中调用一个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
答案 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