【问题标题】:Writing multiple Rake tasks编写多个 Rake 任务
【发布时间】:2019-11-30 11:01:29
【问题描述】:

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

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

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

不知道如何构建任务 'product:delete[1]' 你的意思是?产品:删除

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

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

【问题讨论】:

  • 也显示错误文本。
  • 编辑添加错误信息。

标签: ruby-on-rails rspec rake


【解决方案1】:

您不需要将参数传递给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)

附:它看起来很像那个错误“不知道如何构建任务'product:delete [1]'你是说吗?product:delete”实际上来自您尝试使用任务名称中的参数调用任务而不是比从重新启用。可能是因为尝试了很多不同的事情。

【讨论】:

  • 感谢 Shadwell 做到了。非常感谢您的解释,我现在对此更加清楚了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-12-25
  • 2018-10-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-12
  • 1970-01-01
相关资源
最近更新 更多