File: ref.rb

package info (click to toggle)
ruby-ref 2.0.0-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 268 kB
  • sloc: ruby: 1,262; java: 92; makefile: 5
file content (44 lines) | stat: -rw-r--r-- 1,437 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
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