【问题标题】:Running Thor Task from Migration从 Migration 运行 Thor 任务
【发布时间】:2010-11-11 14:12:31
【问题描述】:

我想从 Migration 中调用 thor 任务。 有了 rake 我可以写了

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

但是我怎么能用 thor 做到这一点? (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

【问题讨论】:

    标签: ruby rake invoke thor


    【解决方案1】:

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

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

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

    【讨论】:

    • 执行迁移时,DB.new 会引发错误。 “未初始化的常量 CreateUsers::Db”。似乎它试图在迁移本身中找到 Db thor 类。 (我更新了我的问题)
    • 确保类已加载,并确保使用正确的大小写。 DbDB 不同,反之亦然。我的回答是针对如何调用 Thor 任务的一般情况,而不是您的具体情况,因此请确保您的名称正确并且您要使用的类已加载。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-31
    • 2012-04-04
    相关资源
    最近更新 更多