Class: Orthoses::Paranoia

Inherits:
Object
  • Object
show all
Defined in:
lib/orthoses/paranoia.rb,
lib/orthoses/paranoia/version.rb

Constant Summary collapse

VERSION =
"1.0.0"

Instance Method Summary collapse

Constructor Details

#initialize(loader) ⇒ Paranoia

Returns a new instance of Paranoia.



8
9
10
# File 'lib/orthoses/paranoia.rb', line 8

def initialize(loader)
  @loader = loader
end

Instance Method Details

#callObject



12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/orthoses/paranoia.rb', line 12

def call
  acts_as_paranoid = CallTracer::Lazy.new
  store = acts_as_paranoid.trace("ActiveRecord::Base.acts_as_paranoid") do
    @loader.call
  end

  acts_as_paranoid.captures.each do |capture|
    base_name = Utils.module_name(capture.method.receiver) or next
    relation_class = "#{base_name}::ActiveRecord_Relation"
    paranoia_instance_methods = "::Paranoia::InstanceMethods[#{base_name}]"
    paranoia_class_methods = "::Paranoia::ClassMethods[#{base_name}, #{relation_class}]"

    store[base_name] << "include #{paranoia_instance_methods}"
    store[base_name] << "extend #{paranoia_class_methods}"

    store[relation_class] << "include #{paranoia_class_methods}"

    store["#{base_name}::ActiveRecord_Associations_CollectionProxy"] << "include #{paranoia_class_methods}"
  end

  store
end