Rails:MetricBase的副本已从模块树中删除但仍处于活动状态

时间:2013-09-19 15:04:15

标签: ruby-on-rails ruby-on-rails-4

我的第一个ruby和rails应用程序出了问题。开发时我最近遇到了这个错误而无法解决它:A copy of MetricBase has been removed from the module tree but is still active。当我对文件或相关文件进行更改时会发生这种情况。它通过重新启动服务器来解决,但这非常不方便。所以我很感激任何帮助。还有关于铁轨的任何错误使用。

对于上下文:我在数据库中有一些数据我想分析。为此我想到了下面的结构。

The call structure of the Metrics System

  1. 控制器调用管理器
  2. 管理器有一个合适的度量标准列表,全部来自MetricBase,它具有创建实际对象的常用功能
  3. 管理员调用每个度量标准类(例如ResourceStats)
  4. Metric-Class(例如ResourceStats)进行一些计算等,然后调用父类中的方法
  5. 父类(MetricBase)创建度量标准模型
  6. 此时输入make_metric_model后直接发生错误:

    class MetricBase
      def initialize(id, resource)
        @id = id
        @resource = resource
        @metrics = []
      end
    
      def make_metric_model(name, desc, value)
        # here the error is thrown
        metric = Metric.where({ metric_id: @id, name: name }).first 
    
        metric = Metric.new if metric.nil?
    
        metric.metric_id = @id
        metric.name = name
        metric.description = desc
        metric.value = value
        metric.resource = @resource
    
        @metrics.push(metric)
      end
    
      def get_metrics
        return @metrics
      end
    end
    

    错误跟踪

    ArgumentError - A copy of MetricBase has been removed from the module tree but is still active!:
      activesupport (4.0.0) lib/active_support/dependencies.rb:445:in `load_missing_constant'
      activesupport (4.0.0) lib/active_support/dependencies.rb:183:in `const_missing'
      app/models/metric_base.rb:9:in `make_metric_model'
      app/models/resource_stats.rb:11:in `analyze'
      app/models/metrics_manager.rb:20:in `block in run_all_metrics'
      app/models/metrics_manager.rb:11:in `run_all_metrics'
      app/controllers/metrics_controller.rb:12:in `run'
    

    我尝试在::之前添加Metric,如另一个问题所示,但同样的事情发生了。请注意,我来自C ++,Java和PHP的背景。

    我正在使用Rails 4和Ruby 2。

    非常感谢任何帮助或提示!

    谢谢, 卢卡斯

1 个答案:

答案 0 :(得分:0)

我仍然不确定最初的问题是什么。解决方法是使用zeus并在编辑后终止并重新启动服务器。

我现在使用的更好的解决方案是将这些类放在module Metrics中并且它可以正常工作。