run_this.rb
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
; end $foo = 0 BarForTestRequireOnce :Foo, "foo_for_test_autoload_once" 100 do results = [] (0...10) do |x| Thread {results[x] = BarForTestRequireOnce} end {|t| t} raise "Concurrent autoloads caused double-loading" if results != [1] * 10 $foo = 0 BarForTestRequireOnce :Foo, "foo_for_test_autoload_once" $" end |
foo_for_test_autoload_once.rb
1 2 3 |
sleep 0.05 $foo += 1 BarForTestRequireOnce = $foo |

