我基本上正在运行一个后台进程,该进程检查文件,然后根据在文件中发现的数据来更新Rails模型。但是,由于错误,我无法从线程内访问模型。
这是我的例子:
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): 追溯(最近一次通话):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:来自portal / 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:在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)
我在这里的目标只是要有一个后台进程来监视日志。我已经看到过其他一些帖子,关于这个相同的确切错误,但也许我可以为他们提供的解决方案做得更好。
任何想法或反馈将不胜感激。
答案 0 :(得分:1)
我认为所提供的错误与上述代码无关。 通常,在使用元编程在运行时修改类时会发生此错误。
看看您需要的地方,定义ExamResult
,看起来您在代码中多次要求它。