web-dev-qa-db-ja.com

単純なRails rakeタスクは、「タスクの作成方法がわからない」というエラーで実行を拒否します。なぜですか?

実行を拒否するこの単純な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'
43
Rubytastic

ファイルの名前をreindex.rakeに変更すると、動作するはずです。

関連: タスク 'db:populate'のビルド方法

90
cjc343

タスク名の前に名前空間を置くのを忘れた場合にも、このエラーが発生する可能性があります。 (つまり、db:reindexの代わりに:reindex)

14
esc_rtn

Rakeタスクのファイル拡張子は「.rake」でなければなりません。

ファイルに「.rb」という名前を付けた場合、rakeはそれを見つけられず、ここで終わるまで数分間自分の正気を疑います。

2
David Hempy

ファイル名ではなく、タスクの名前を呼び出すことを忘れないでください。一番いいのは、同じ名前が付けられていることです。

2
Morgan

このエラーは、名前空間名がアンダースコアになったために発生します

As is: deploy_app  (not work)
To be: deployapp   (working)
0
super1ha1