Rails 6 задач с аргументами - PullRequest
0 голосов
/ 16 апреля 2020

// Это вопрос для Ruby на Rails

У меня есть задачи Rails, которые должны принимать аргументы из командной строки.

Выглядит так:

 task update: :environment do

if (ARGV[1] == "DEBUG")
  DEBUG = true
else
  DEBUG = false
end

Теперь я могу запустить командную строку:

rails call: update DEBUG

и это работает!

Но после того, как задача была завершена, я также получил сообщение:

rails aborted!
Don't know how to build task 'DEBUG' (See the list of available tasks with `rails --tasks`)

Я уже искал сообщество, но все, что я нашел, было довольно старым и, похоже, не совместимо с Rails 6! Так вот почему я спрашиваю здесь.

1 Ответ

1 голос
/ 16 апреля 2020

Я пытаюсь использовать код, которым вы поделились выше, я получил ту же ошибку rake abort.

его Прибытие, потому что они, как вы вызываете задачу rake с аргументом, предполагают, что DEBUG - еще одна задача, поэтому попытаться найти и дать эту ошибку.

Вот правильный способ сделать это. Я сделал некоторую модификацию в коде, чтобы избавиться от ошибки, используйте следующий код, он будет отлично работать

task :update, [:value] => [:environment] do |t, args|
  if (args[:value] == "DEBUG")
    DEBUG = true
    p "Value is True"
  else
    DEBUG = false
    p "Value is False"
  end
end

он отлично работает enter image description here

Вы также можете поместить эту задачу в пространство имен, а затем вызвать ее оттуда

namespace :debug_task do
 # task code here what I mentioned above 
end

и затем вызвать ее, чтобы сформировать терминал, подобный этому

rake debug_task:update["DEBUG"]

enter image description here

...