当我运行此代码时,在9/10的情况下,Rails会引发RuntimeError: 自动加载常量SearchEngine时检测到循环依赖性
def search
ts_start = Time.now
results = []
threads = []
@engines.each do |name|
threads << Thread.new do
engine = "#{name.capitalize}Engine".constantize.new @params, @location
results << engine.search
Thread.exit if results.length == @engines.length || (Time.now - ts_start) > @timeout
end
end
threads.each { |t| t.abort_on_exception = false; t.join }
unless results.length == 0 then
# do some stuff...
end
end
但是,当我创建新的&#39;引擎&#39;实例在新线程之前:
engine = "#{name.capitalize}Engine".constantize.new @params, @location
threads << Thread.new do
results << engine.search
然后它在9/10案件中运行良好。但它仍然不是100%。
当我根本不使用线程时,它每次都运行良好。
有关如何修改代码的任何建议吗?