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
Der Absturz:
.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
Nach einem wenig zu graben, scheint es, dass da jedes Thema ist Referenzierung MyClass, verursacht einen Fehler beim automatischen Laden von Ruby. Wenn ich eine einzelne Zeile mit einem Verweis auf MyClass
hinzufüge, bevor ich den Thread aufruft, scheint es den Fehler zu verhindern.
Meine Frage ist, gibt es eine "richtige" Möglichkeit, dies zu verhindern, oder ist es ein Fehler in Ruby? Mein Verständnis war, dass die automatische Laden war Thread-sicher, pro http://blog.plataformatec.com.br/2012/08/eager-loading-for-greater-good/
Rails 4.1.5 Ruby 2.1.3 –
kommentieren Nur weil ich diese folgen wollen. :) – baash05
Was hast du endlich gemacht? –