Module: Journaled

Defined in:
app/models/journaled/audit_log/event.rb,
lib/journaled.rb,
lib/journaled/engine.rb,
lib/journaled/errors.rb,
lib/journaled/current.rb,
lib/journaled/version.rb,
lib/journaled/audit_log.rb,
lib/journaled/connection.rb,
lib/journaled/transaction_ext.rb,
app/jobs/journaled/delivery_job.rb,
app/jobs/journaled/application_job.rb

Overview

FIXME: This cannot be included in lib/ because Journaled::Event is autoloaded via app/models

Autoloading Journaled::Event isn't strictly necessary, and for compatibility it would
make sense to move it to lib/.

Defined Under Namespace

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

Constant Summary collapse

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

Class Method Summary collapse

Class Method Details

.actor_uriObject



37
38
39
# File 'lib/journaled.rb', line 37

def self.actor_uri
  Journaled::ActorUriProvider.instance.actor_uri
end

.commit_hashObject



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

def self.commit_hash
  ENV.fetch('GIT_COMMIT')
end

.detect_queue_adapter!Object



45
46
47
48
49
50
51
52
53
54
55
56
57
58
# File 'lib/journaled.rb', line 45

def self.detect_queue_adapter!
  unless SUPPORTED_QUEUE_ADAPTERS.include?(queue_adapter)
    raise <<~MSG
      Journaled has detected an unsupported ActiveJob queue adapter: `:#{queue_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)


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

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

.enabled?Boolean

Returns:

  • (Boolean)


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

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

.queue_adapterObject



41
42
43
# File 'lib/journaled.rb', line 41

def self.queue_adapter
  job_base_class_name.constantize.queue_adapter_name
end

.schema_providersObject



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

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

.tag!(**tags) ⇒ Object



68
69
70
# File 'lib/journaled.rb', line 68

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

.tagged(**tags) ⇒ Object



60
61
62
63
64
65
66
# File 'lib/journaled.rb', line 60

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