Il codice:riferimento a un metodo Classe di diversi fili provoca autocaricamento dipendenza circolare dura
threads = []
Thread.abort_on_exception=true
begin # throw exceptions in threads so we can see them
threads << Thread.new{@a = MyClass.m1}
threads << Thread.new{@b = MyClass.m2}
threads << Thread.new{@c = MyClass.m3}
threads.each { |thr| thr.join }
rescue Exception => e
puts "EXCEPTION: #{e.inspect}"
puts "MESSAGE: #{e.message}"
end
L'arresto:
.rvm/gems/[email protected]/gems/activesupport-4.1.5/lib/active_support/dependencies.rb:478:in load_missing_constant': Circular dependency detected while autoloading constant MyClass
Dopo scavando un po ', sembra che, poiché ciascuna filettatura fa riferimento MyClass, sta causando un errore con il caricamento automatico di ruby. Se aggiungo una riga singola con un riferimento a MyClass
prima di effettuare le chiamate Thread, sembra che si tratti di impedire l'errore.
La mia domanda è, c'è un modo "corretto" per evitare che ciò accada, o è un bug in ruby? La mia comprensione era che era caricamento automatico thread-safe, per http://blog.plataformatec.com.br/2012/08/eager-loading-for-greater-good/
Rails 4.1.5, Ruby 2.1.3 –
Proprio commentando perché voglio seguire questa. :) – baash05
Cosa hai fatto alla fine? –