我的第一个ruby和rails应用程序出了问题。开发时我最近遇到了这个错误而无法解决它:A copy of MetricBase has been removed from the module tree but is still active
。当我对文件或相关文件进行更改时会发生这种情况。它通过重新启动服务器来解决,但这非常不方便。所以我很感激任何帮助。还有关于铁轨的任何错误使用。
对于上下文:我在数据库中有一些数据我想分析。为此我想到了下面的结构。
此时输入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。
非常感谢任何帮助或提示!
谢谢, 卢卡斯
答案 0 :(得分:0)
我仍然不确定最初的问题是什么。解决方法是使用zeus并在编辑后终止并重新启动服务器。
我现在使用的更好的解决方案是将这些类放在module Metrics
中并且它可以正常工作。