XXX的副本已从模块中删除,但仍处于活动状态

时间:2018-09-10 18:03:09

标签: ruby-on-rails ruby

我基本上正在运行一个后台进程,该进程检查文件,然后根据在文件中发现的数据来更新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)

我在这里的目标只是要有一个后台进程来监视日志。我已经看到过其他一些帖子,关于这个相同的确切错误,但也许我可以为他们提供的解决方案做得更好。

任何想法或反馈将不胜感激。

1 个答案:

答案 0 :(得分:1)

我认为所提供的错误与上述代码无关。 通常,在使用元编程在运行时修改类时会发生此错误。

看看您需要的地方,定义ExamResult,看起来您在代码中多次要求它。