Не удалось создать простую задачу Рейка

#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 .