Module: ActiveRecord::Journal

Defined in:
lib/active_record/journal.rb,
lib/active_record/journal/version.rb,
lib/active_record/journal/constants.rb,
lib/active_record/journal/journable.rb,
lib/active_record/journal/configuration.rb,
lib/active_record/journal/journable/rule.rb,
lib/active_record/journal/journable/changes.rb,
lib/active_record/journal/journable/context.rb,
lib/active_record/journal/journable/options.rb,
lib/active_record/journal/journable/callback.rb,
lib/active_record/journal/journable/attributes.rb

Defined Under Namespace

Modules: Journable Classes: Configuration, Error

Constant Summary collapse

VERSION =
'0.1.1'
ACTIONS =
{ reads: %w[read], writes: %w[update create destroy] }.freeze
JOURNABLE_OPTIONS =
%i[
  entries_class
  tags_class
  on
  if
  unless
  only
  except
  mask
  type
].freeze

Class Method Summary collapse

Class Method Details

.configurationObject



13
14
15
# File 'lib/active_record/journal.rb', line 13

def configuration
  @configuration ||= Configuration.new
end

.context {|context| ... } ⇒ Object

Yields:



27
28
29
30
# File 'lib/active_record/journal.rb', line 27

def context
  context = Journable::Context.new
  yield context
end

.context_overrideObject



38
39
40
41
# File 'lib/active_record/journal.rb', line 38

def context_override
  # https://ruby-doc.org/core-2.5.0/Thread.html#method-i-thread_variable_get
  Thread.current.thread_variable_get(:activerecord_journable_context_override)
end

.context_override=(context) ⇒ Object



43
44
45
46
# File 'lib/active_record/journal.rb', line 43

def context_override=(context)
  # https://ruby-doc.org/core-2.5.0/Thread.html#method-i-thread_variable_set
  Thread.current.thread_variable_set(:activerecord_journable_context_override, context)
end

.ignore {|context| ... } ⇒ Object

Yields:



32
33
34
35
36
# File 'lib/active_record/journal.rb', line 32

def ignore
  context = Journable::Context.new
  context.ignore_actions = true
  yield context
end

.init {|configuration| ... } ⇒ Object

Yields:



17
18
19
# File 'lib/active_record/journal.rb', line 17

def init
  yield configuration
end

.tag(**kwargs) {|context| ... } ⇒ Object

Yields:



21
22
23
24
25
# File 'lib/active_record/journal.rb', line 21

def tag(**kwargs)
  context = Journable::Context.new(**kwargs)
  context.generate_tag = true
  yield context
end