Я в основном запускаю фоновый процесс, который проверяет файлы, а затем обновляет модель рельсов на основе данных, обнаруженных в файле. Однако я не могу получить доступ к модели из потока из-за ошибки.
Вот мой пример:
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)
Моя цель здесь - просто создать фоновый процесс для отслеживания журналов. Я видел некоторые другие сообщения об этой же точной ошибке, но, возможно, я мог бы сделать это немного лучше, чем решения, предоставленные для них.
Любые мысли или отзывы будут с благодарностью.