Копия XXX была удалена из модуля, но все еще активна - PullRequest
0 голосов
/ 10 сентября 2018

Я в основном запускаю фоновый процесс, который проверяет файлы, а затем обновляет модель рельсов на основе данных, обнаруженных в файле. Однако я не могу получить доступ к модели из потока из-за ошибки.

Вот мой пример:

def check_logs
    while @start == 1
        results = Dir.glob("#{@path}/*.txt")
        unless results.empty?
            results.each do |result|
                file_name = result.split("/")[-1]
                data = File.open(result).read

                if file_name.include? "get"
                    data_contents = data.split("\n")
                    time = data_contents[0]
                    ExamResult.create(time: time)
                end
                FileUtils.rm_rf result
            end
        end

        sleep 5
    end
end

def start_agent
    @start = 1
    Thread.start {check_logs}
end

def stop_agent
   @start = 0
end

Однако, несмотря на то, что он работает в фоновом режиме, я вижу эту ошибку, появляющуюся через консоль:

завершено с исключением (report_on_exception - true): Traceback (последний вызов был последним): 5: от portal / lib / custom_rb / exam_results / exam_custom.rb: 69: в block in start_monitoring_agent' 4: from portal/lib/custom_rb/exam_results/exam_custom.rb:40:in check_logs ' 3: из портала / lib / custom_rb / exam_results / exam_custom.rb: 40: в блоке each' 2: from portal/lib/custom_rb/exam_results/exam_custom.rb:46:in в check_logs '1: с /home/nutella/.rvm/gems/ruby-2.5.1/gems/activesupport-5.1.6/lib/active_support/dependencies.rb:202:in const_missing' /home/user/.rvm/gems/ruby-2.5.1/gems/activesupport-5.1.6/lib/active_support/dependencies.rb:496:in load_missing_constant ': копия ExamResult была удалена из дерево модулей, но все еще активно! (ArgumentError)

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

Любые мысли или отзывы будут с благодарностью.

1 Ответ

0 голосов
/ 10 сентября 2018

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

Взгляните на места, где вам нужно, определите ExamResult, похоже, вам требуется это несколько раз в коде.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...