Задача Rails не выполняется, если в командной строке не был запущен rails runner с момента загрузки компьютера с сервером Linux. - PullRequest
0 голосов
/ 06 марта 2019

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

Проблема, с которой я сталкиваюсь, заключается в том, что, когда я недавноперезапустил мою виртуальную машину с запущенным сервером (используя vagrant), программа не запустится.Но после некоторого тестирования я обнаружил, что после запуска rails runner (выполненная команда не имеет значения) она начнет работать.

class Admin::AccessLogManageController < Admin::AdminController
  def update_project_ids
    command = "rbenv exec bundle exec rails runner --environment=#{Rails.env} Tasks::UpdateAccessLogProjectIds.execute"
    pid =spawn(command, :chdir=>".")
    Process.detach(pid)
  end
end

1 Ответ

0 голосов
/ 07 марта 2019

Я нашел проблему. Это связано с пружиной, по сути, среда настроена на запуск с пружиной, но она не запускает процессы автоматически. Добавление DISABLE_SPRING = 1, кажется, решает проблему.

class Admin::AccessLogManageController < Admin::AdminController
  def update_project_ids
    command = "DISABLE_SPRING=1 rbenv exec bundle exec rails runner --environment=#{Rails.env} Tasks::UpdateAccessLogProjectIds.execute"
    pid =spawn(command, :chdir=>".")
    Process.detach(pid)
  end
end

Это была информация, которая мне была нужна для решения проблемы. Рельс бегунка без пружины

...