Class: RKit::ActiveRecordUtility::Base

Inherits:
Object
  • Object
show all
Defined in:
lib/r_kit/active_record_utility/base.rb

Direct Known Subclasses

Pool, Publisher, Series, Tag

Defined Under Namespace

Classes: Pool, Publisher, Series, Tag

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(base, method_name:) ⇒ Base



5
6
7
8
# File 'lib/r_kit/active_record_utility/base.rb', line 5

def initialize base, method_name:;
  @base = base
  @method_name = method_name
end

Instance Attribute Details

#baseObject

Returns the value of attribute base.



3
4
5
# File 'lib/r_kit/active_record_utility/base.rb', line 3

def base
  @base
end

#method_nameObject

Returns the value of attribute method_name.



3
4
5
# File 'lib/r_kit/active_record_utility/base.rb', line 3

def method_name
  @method_name
end

Class Method Details

.inherited(subclass) ⇒ Object



65
66
67
68
# File 'lib/r_kit/active_record_utility/base.rb', line 65

def inherited subclass
  subclass.instance_variable_set :@interfered, []
  super
end

.interfered(base) ⇒ Object



61
62
63
# File 'lib/r_kit/active_record_utility/base.rb', line 61

def interfered base
  @interfered << base
end

.interfered?(base) ⇒ Boolean



57
58
59
# File 'lib/r_kit/active_record_utility/base.rb', line 57

def interfered? base
  @interfered.include? base
end

Instance Method Details

#can_interfere?Boolean

TODO: private/protected ?

Raises:

  • (NotImplementedError)


26
27
28
# File 'lib/r_kit/active_record_utility/base.rb', line 26

def can_interfere?
  raise NotImplementedError, 'Subclasses must implement this method'
end

#interfere(*args) ⇒ Object



15
16
17
18
19
20
21
22
# File 'lib/r_kit/active_record_utility/base.rb', line 15

def interfere *args
  if can_interfere?
    interfere! *args
    interfered!
  else
    raise DatabaseSchemaError.new(base, method_name: method_name) unless running_script? /^rake db:/
  end
end

#interfere!(**options) ⇒ Object



30
31
32
33
34
35
36
# File 'lib/r_kit/active_record_utility/base.rb', line 30

def interfere! **options
  base.interferences_options_set self, **options

  base.instance_eval &instance_interferences
  base.class_eval &class_interferences
  base.decorator_klass.class_eval &decorator_interferences if base.decorator_klass
end

#interfered!Object



52
53
54
# File 'lib/r_kit/active_record_utility/base.rb', line 52

def interfered!
  __class__.interfered base
end

#to_sObject



10
11
12
# File 'lib/r_kit/active_record_utility/base.rb', line 10

def to_s
  __class__.demodulize.underscore
end