Простая задача rails 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'

person Rubytastic    schedule 15.10.2012    source источник


Ответы (5)


Переименуйте файл в reindex.rake, и он должен работать.

Связано: Как создать задачу 'db:populate'

person cjc343    schedule 15.10.2012
comment
спасибо, это действительно была проблема, и ее легко пропустить, просто глядя на содержимое файла, задаваясь вопросом, почему что-то не работает! - person Rubytastic; 16.10.2012
comment
Важной вещью, которую я сначала упустил, является то, что расширение файла должно быть .rake, а не .rb. - person Jason Swett; 21.03.2016
comment
Второй раз я приехал сюда. Пытался проголосовать, уже было. Я должен был усвоить урок. Блин. - person sandre89; 11.02.2019

Вы также можете получить эту ошибку, если забудете указать пространство имен перед именем задачи. (т.е. :reindex вместо db:reindex)

person esc_rtn    schedule 26.03.2015

Расширение файла для задач rake должно быть «.rake».

Если вы назвали свой файл '.rb', то rake его не найдет, и вы несколько минут будете сомневаться в собственном здравомыслии, прежде чем оказаться здесь.

person David Hempy    schedule 18.02.2019
comment
Разве это не дубликат принятого ответа? - person Chris; 16.04.2019
comment
Во многом да. Но я добавил акцент на распространенный неправильный подход (например, вы назвали свой .rb?), чтобы помочь таким людям, как я, которые проигнорировали первый ответ: «Да, у моего файла рубиновое расширение… это не то, почему Ruby ненавидит меня.) - person David Hempy; 12.11.2019

Не забудьте проверить, что вы называете имя задачи, а не имя файла. Лучше всего, чтобы они назывались одинаково.

person Morgan    schedule 02.11.2016

Эта ошибка произошла со мной из-за того, что имя пространства имен получило подчеркивание

As is: deploy_app  (not work)
To be: deployapp   (working)
person super1ha1    schedule 29.06.2018