Module: ActiveRecord::Bogacs::ThreadSafe

Defined in:
lib/active_record/bogacs/thread_safe.rb,
lib/active_record/bogacs/thread_safe/synchronized.rb

Defined Under Namespace

Modules: Synchronized

Constant Summary collapse

Map =
::ThreadSafe::Cache

Class Method Summary collapse

Class Method Details

.load_atomic_referenceObject



29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
# File 'lib/active_record/bogacs/thread_safe.rb', line 29

def self.load_atomic_reference
  return const_get :AtomicReference if const_defined? :AtomicReference

  begin
    require 'concurrent/atomic/atomic_reference.rb'
  rescue LoadError => e
    begin
      require 'atomic'
    rescue LoadError
      warn "shareable pool needs gem 'concurrent-ruby', '>= 0.9.1' (or the old 'atomic' gem) " <<
           "please install or add it to your Gemfile"
      raise e
    end
  end

  if defined? ::Concurrent::AtomicReference
    const_set :AtomicReference, ::Concurrent::AtomicReference
  else
    const_set :AtomicReference, ::Atomic
  end
end

.load_cheap_lockable(required = true) ⇒ Object



51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
# File 'lib/active_record/bogacs/thread_safe.rb', line 51

def self.load_cheap_lockable(required = true)
  return const_get :CheapLockable if const_defined? :CheapLockable

  begin
    require 'concurrent/thread_safe/util/cheap_lockable.rb'
  rescue LoadError => e
    begin
      require 'thread_safe'
    rescue
      return nil unless required
      warn "activerecord-bogacs needs gem 'concurrent-ruby', '~> 1.0' (or the old 'thread_safe' gem) " <<
           "please install or add it to your Gemfile"
      raise e
    end
  end

  if defined? ::Concurrent::ThreadSafe::Util::CheapLockable
    const_set :CheapLockable, ::Concurrent::ThreadSafe::Util::CheapLockable
  else
    const_set :CheapLockable, ::ThreadSafe::Util::CheapLockable
  end
end