#ruby-on-rails #ruby #rake
Вопрос:
Я создал задачу Rake, называемую файлом update_zendesk_rake.rb, но каждый раз, когда я пытаюсь запустить ее с помощью команды
rake zendesk:update_zendesk_rake
Я получаю сообщение об ошибке:
rake aborted!
Don't know how to build task 'zendesk:update_zendesk_rake' (See the list of available tasks with `rake --tasks`)
/Users/conorquarry/.rvm/gems/ruby-2.5.1/gems/rake-13.0.3/lib/rake/task_manager.rb:59:in `[]'
/Users/conorquarry/.rvm/gems/ruby-2.5.1/gems/rake-13.0.3/lib/rake/application.rb:159:in `invoke_task'
/Users/conorquarry/.rvm/gems/ruby-2.5.1/gems/rake-13.0.3/lib/rake/application.rb:116:in `block (2 levels) in top_level'
/Users/conorquarry/.rvm/gems/ruby-2.5.1/gems/rake-13.0.3/lib/rake/application.rb:116:in `each'
/Users/conorquarry/.rvm/gems/ruby-2.5.1/gems/rake-13.0.3/lib/rake/application.rb:116:in `block in top_level'
/Users/conorquarry/.rvm/gems/ruby-2.5.1/gems/rake-13.0.3/lib/rake/application.rb:125:in `run_with_threads'
/Users/conorquarry/.rvm/gems/ruby-2.5.1/gems/rake-13.0.3/lib/rake/application.rb:110:in `top_level'
/Users/conorquarry/.rvm/gems/ruby-2.5.1/gems/rake-13.0.3/lib/rake/application.rb:83:in `block in run'
/Users/conorquarry/.rvm/gems/ruby-2.5.1/gems/rake-13.0.3/lib/rake/application.rb:186:in `standard_exception_handling'
/Users/conorquarry/.rvm/gems/ruby-2.5.1/gems/rake-13.0.3/lib/rake/application.rb:80:in `run'
/Users/conorquarry/.rvm/gems/ruby-2.5.1/gems/rake-13.0.3/exe/rake:27:in `<top (required)>'
/Users/conorquarry/.rvm/gems/ruby-2.5.1/bin/rake:23:in `load'
/Users/conorquarry/.rvm/gems/ruby-2.5.1/bin/rake:23:in `<main>'
/Users/conorquarry/.rvm/gems/ruby-2.5.1/bin/ruby_executable_hooks:22:in `eval'
/Users/conorquarry/.rvm/gems/ruby-2.5.1/bin/ruby_executable_hooks:22:in `<main>'
Он также не отображается, когда я перечисляю доступные задачи, что наводит меня на мысль, что он сломан, однако я не вижу, в чем ошибка.
приложение/_модули/центр/грабли/update_zendesk_rake.rb
namespace :zendesk do
desc 'update status group values'
task update_zendesk_rake: :environment do
the_map = {
"yssse_ra"=>"legal",
"active"=>"active",
"after"=>"legal",
}
the_map.each { |k,v| CaseFileStatus.where(state: k).update_all(zendesk_status_group: v) }
end
end
Комментарии:
1. Как вы назвали файл с задачей rake и в какую папку вы его поместили?
2. @spickermann обновил эти данные 🙂
3. Задачи рейка обычно
.rake
не имеют расширения.rb
, и они также живут/lib/tasks
, попробуйте переименовать, переместить и посмотреть, поможет ли что-нибудь.
Ответ №1:
От к направляющим руководствам о пользовательских задачах грабель:
Пользовательские задачи рейка имеют
.rake
расширение и помещаются внутрьRails.root/lib/tasks
. Вы можете создать эти пользовательские задачи рейка сbin/rails generate task
помощью команды.
Это означает, что ваш файл должен называться так:
lib/tasks/update_zendesk.rake
Обратите внимание на расширение файла .rake
вместо .rb
.