编写多个 Rake 任务

Writing multiple Rake tasks

我写了两个 Rspec 测试,每个测试调用相同的 Rake 任务。第二个任务永远不会 运行,因为调用只触发一次,所以我需要重新启用。我的问题是我无法将 rake 任务发送到 运行,这是我正在使用的命令:

Rake::Task["product:delete"].reenable(product.id)

我收到此命令的 运行 时间错误:

不知道如何构建任务'product:delete[1]' 你是说? product:delete

有人知道我应该怎么写吗?我很困惑,因为孤立地我让它通过 运行ning:

Rake.application.invoke_task("product:delete[#{product.id}]"

您不需要将参数传递给 reenable(不需要参数)

然而,您应该将参数传递给 invoke(而不是 invoke_task),而不是将其指定为任务名称的一部分。

例如

Rake::Task['product:delete'].reenable
Rake::Task['product:delete'].invoke(product.id)

您可以通过将任务保存在变量中来进一步简化它:

t = Rake::Task['product:delete']
t.renable
t.invoke(product.id)

P.S。看起来很像错误 "Don't know how to build task 'product:delete[1]' Did you mean? product:delete" 实际上是由于您尝试使用任务名称中的参数调用任务而不是来自重新启用。可能是因为尝试了很多不同的东西。