我在rails应用程序中有一个名为Benchmark的模型,虽然ruby在启动过程时默认需要其Benchmark模块。
无论如何我可以卸载Benchmark模块以使用我的Benchmark模型吗?
答案 0 :(得分:1)
通常可以使用以下逻辑从原始名称解除Ruby常量:
require "benchmark"
BM = Benchmark
Object.send(:remove_const, :Benchmark)
class Benchmark
def initialize
puts "Hey, I'm your custom Benchmark"
end
...
end
但是,特别是对于原始的Benchmark
实现,这不起作用,因为它内部充满了像这样的名称引用:
@list << res = Benchmark.measure(label, &blk)
最实用的解决方案是选择“免费”同义词来命名您的模型。
答案 1 :(得分:0)
您可以使用命名空间模型。
module Myapp
class Benchmark < ActiveRecord::Base
end
end
您可能需要指定表名。
如果我是你,我只会为该模型命名,例如:标尺或指示器或MyBenchmark。