48

我有这个拒绝运行的简单 rake 任务。我只是不明白为什么它看起来正确。谁能指出我犯的可能非常简单的错误?谢谢!

/lib/tasks/reindex.rb:

namespace :db do

  desc "Tire reindex profiles"

  task :reindex => :environment do
    system "cd #{Rails.root} && rake environment tire:import CLASS='Profile' FORCE=true"
  end

end

错误:

rake db:reindex
rake aborted!
Don't know how to build task 'db:reindex'
4

5 回答 5

98

将您的文件重命名为reindex.rake,它应该可以工作。

相关:如何构建任务'db:populate'

于 2012-10-15T20:11:19.123 回答
16

如果您忘记将命名空间放在任务名称之前,也会出现此错误。(即:reindex 而不是 db:reindex)

于 2015-03-26T14:47:21.593 回答
9

rake 任务的文件扩展名必须是“.rake”。

如果您将文件命名为“.rb”,则 rake 将找不到它,并且您将在几分钟内质疑自己的理智,然后才到这里结束。

于 2019-02-18T15:26:14.090 回答
2

不要忘记检查您调用的是任务名称而不是文件名。最好的事情是它们的名称相同。

于 2016-11-02T13:02:08.407 回答
2

这个错误发生在我身上是因为命名空间名称有下划线

As is: deploy_app  (not work)
To be: deployapp   (working)
于 2018-06-29T04:02:33.743 回答