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/outbox/worker.rb,
lib/journaled/outbox/adapter.rb,
lib/journaled/transaction_ext.rb,
lib/journaled/delivery_adapter.rb,
app/jobs/journaled/delivery_job.rb,
app/models/journaled/outbox/event.rb,
app/jobs/journaled/application_job.rb,
lib/journaled/kinesis_batch_sender.rb,
lib/journaled/outbox/metric_emitter.rb,
lib/journaled/kinesis_client_factory.rb,
lib/journaled/outbox/batch_processor.rb,
lib/journaled/delivery_adapters/active_job_adapter.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, DeliveryAdapters, Event, Outbox, RelationChangeProtection, TransactionExt Classes: ActorUriProvider, ApplicationJob, Change, ChangeDefinition, ChangeWriter, Current, DeliveryAdapter, DeliveryJob, Engine, KinesisBatchSender, KinesisClientFactory, NotTrulyExceptionalError, TransactionSafetyError, Writer

Constant Summary collapse

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

Class Method Summary collapse

Class Method Details

.actor_uriObject



65
66
67
# File 'lib/journaled.rb', line 65

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

.commit_hashObject



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

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

.development_or_test?Boolean

Returns:

  • (Boolean)


49
50
51
# File 'lib/journaled.rb', line 49

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

.enabled?Boolean

Returns:

  • (Boolean)


53
54
55
# File 'lib/journaled.rb', line 53

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

.queue_adapterObject



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

def self.queue_adapter
  job_base_class_name.constantize.queue_adapter_name
end

.schema_providersObject



57
58
59
# File 'lib/journaled.rb', line 57

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

.tag!(**tags) ⇒ Object



81
82
83
# File 'lib/journaled.rb', line 81

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

.tagged(**tags) ⇒ Object



73
74
75
76
77
78
79
# File 'lib/journaled.rb', line 73

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

.transactional_batching_enabled?Boolean

Returns:

  • (Boolean)


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

def self.transactional_batching_enabled?
  Thread.current[:journaled_transactional_batching_enabled] || @@transactional_batching_enabled
end

.with_transactional_batchingObject



41
42
43
44
45
46
47
# File 'lib/journaled.rb', line 41

def self.with_transactional_batching
  value_was = Thread.current[:journaled_transactional_batching_enabled]
  Thread.current[:journaled_transactional_batching_enabled] = true
  yield
ensure
  Thread.current[:journaled_transactional_batching_enabled] = value_was
end