Module: Journaled

Defined in:
lib/journaled.rb,
lib/journaled/engine.rb,
lib/journaled/current.rb,
lib/journaled/version.rb,
app/jobs/journaled/delivery_job.rb,
app/jobs/journaled/application_job.rb

Defined Under Namespace

Modules: Actor, Changes, Event, RelationChangeProtection Classes: ActorUriProvider, ApplicationJob, Change, ChangeDefinition, ChangeWriter, Current, DeliveryJob, Engine, NotTrulyExceptionalError, Writer

Constant Summary collapse

SUPPORTED_QUEUE_ADAPTERS =
%w(delayed delayed_job good_job que).freeze
VERSION =
"4.2.0".freeze

Class Method Summary collapse

Class Method Details

.actor_uriObject



34
35
36
# File 'lib/journaled.rb', line 34

def actor_uri
  Journaled::ActorUriProvider.instance.actor_uri
end

.commit_hashObject



30
31
32
# File 'lib/journaled.rb', line 30

def commit_hash
  ENV.fetch('GIT_COMMIT')
end

.detect_queue_adapter!Object



38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
# File 'lib/journaled.rb', line 38

def detect_queue_adapter!
  adapter = job_base_class_name.constantize.queue_adapter_name
  unless SUPPORTED_QUEUE_ADAPTERS.include?(adapter)
    raise <<~MSG
      Journaled has detected an unsupported ActiveJob queue adapter: `:#{adapter}`

      Journaled jobs must be enqueued transactionally to your primary database.

      Please install the appropriate gems and set `queue_adapter` to one of the following:
      #{SUPPORTED_QUEUE_ADAPTERS.map { |a| "- `:#{a}`" }.join("\n")}

      Read more at https://github.com/Betterment/journaled
    MSG
  end
end

.development_or_test?Boolean

Returns:

  • (Boolean)


18
19
20
# File 'lib/journaled.rb', line 18

def development_or_test?
  %w(development test).include?(Rails.env)
end

.enabled?Boolean

Returns:

  • (Boolean)


22
23
24
# File 'lib/journaled.rb', line 22

def enabled?
  ['0', 'false', false, 'f', ''].exclude?(ENV.fetch('JOURNALED_ENABLED', !development_or_test?))
end

.schema_providersObject



26
27
28
# File 'lib/journaled.rb', line 26

def schema_providers
  @schema_providers ||= [Journaled::Engine, Rails]
end

.tag!(**tags) ⇒ Object



62
63
64
# File 'lib/journaled.rb', line 62

def self.tag!(**tags)
  Current.tags = Current.tags.merge(tags)
end

.tagged(**tags) ⇒ Object



54
55
56
57
58
59
60
# File 'lib/journaled.rb', line 54

def self.tagged(**tags)
  existing_tags = Current.tags
  tag!(**tags)
  yield
ensure
  Current.tags = existing_tags
end