ruby - 从迁移运行 Thor 任务

标签 ruby rake invoke 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

最佳答案

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

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

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

关于ruby - 从迁移运行 Thor 任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4155229/

相关文章:

ruby-on-rails - 处理业务代码中的 GraphQL Enum 值

ruby - 如何使用 rake 运行指定目录中的所有 ruby​​ 文件

java - 从另一个类调用gui,但在代码终止后出现

ruby-on-rails - 了解事件记录查询

Ruby:1.9 中的 parsedate 去哪儿了?

ruby - extconf.rb 如何定义要使用的源文件

c# winform Invoke 抛出 NullReferenceException

VB.net、调用、委托(delegate)和线程。无法弄清楚如何跨类使用它们

html - 使用ruby处理html表单提交以修改服务器上的本地文件

ruby-on-rails-3 - 如何让 rake 在没有参数的情况下自动运行任务?