lib/ref.rb
module Ref
$LOAD_PATH.unshift(File.dirname(__FILE__))
require 'ref/abstract_reference_value_map'
require 'ref/abstract_reference_key_map'
require 'ref/reference'
require 'ref/reference_queue'
if defined?(Java)
begin
require 'ref_ext'
require 'org/jruby/ext/ref/references'
rescue LoadError
require 'ref/soft_reference'
require 'ref/weak_reference'
warn 'Error loading Rspec rake tasks, probably building the gem...'
end
else
require 'ref/soft_reference'
if defined?(RUBY_ENGINE) && RUBY_ENGINE == 'rbx'
# If using Rubinius set the implementation to use WeakRef since it is very efficient and using finalizers is not.
require 'ref/weak_reference/weak_ref'
elsif defined?(::ObjectSpace::WeakMap)
# Ruby 2.0 has a working implementation of weakref.rb backed by the new ObjectSpace::WeakMap
require 'ref/weak_reference/weak_ref'
elsif defined?(::ObjectSpace._id2ref)
# If ObjectSpace can lookup objects from their object_id, then use the pure ruby implementation.
require 'ref/weak_reference/pure_ruby'
else
# Otherwise, wrap the standard library WeakRef class
require 'ref/weak_reference/weak_ref'
end
end
require 'ref/soft_key_map'
require 'ref/soft_value_map'
require 'ref/strong_reference'
require 'ref/weak_key_map'
require 'ref/weak_value_map'
def self.jruby?
defined?(Java)
end
end