Module: Sbmt::Outbox
- Defined in:
- lib/sbmt/outbox.rb,
lib/sbmt/outbox/cli.rb,
lib/sbmt/outbox/engine.rb,
lib/sbmt/outbox/errors.rb,
lib/sbmt/outbox/logger.rb,
lib/sbmt/outbox/worker.rb,
lib/sbmt/outbox/version.rb,
lib/sbmt/outbox/ascii_art.rb,
lib/sbmt/outbox/throttler.rb,
lib/sbmt/outbox/thread_pool.rb,
lib/sbmt/outbox/probes/probe.rb,
lib/sbmt/outbox/error_tracker.rb,
app/models/sbmt/outbox/base_item.rb,
app/models/sbmt/outbox/inbox_item.rb,
lib/sbmt/outbox/database_switcher.rb,
lib/sbmt/outbox/middleware/runner.rb,
app/models/sbmt/outbox/outbox_item.rb,
lib/sbmt/outbox/middleware/builder.rb,
lib/sbmt/outbox/redis_client_factory.rb,
app/models/sbmt/outbox/base_item_config.rb,
app/interactors/sbmt/outbox/process_item.rb,
app/models/sbmt/outbox/inbox_item_config.rb,
app/models/sbmt/outbox/outbox_item_config.rb,
app/interactors/sbmt/outbox/dry_interactor.rb,
app/interactors/sbmt/outbox/base_create_item.rb,
app/interactors/sbmt/outbox/create_inbox_item.rb,
lib/sbmt/outbox/middleware/sentry/transaction.rb,
app/interactors/sbmt/outbox/create_outbox_item.rb,
app/jobs/sbmt/outbox/base_delete_stale_items_job.rb,
app/jobs/sbmt/outbox/delete_stale_inbox_items_job.rb,
app/jobs/sbmt/outbox/delete_stale_outbox_items_job.rb,
lib/sbmt/outbox/instrumentation/open_telemetry_loader.rb,
app/interactors/sbmt/outbox/retry_strategies/compacted_log.rb,
app/interactors/sbmt/outbox/retry_strategies/exponential_backoff.rb,
lib/sbmt/outbox/middleware/sentry/tracing_item_process_middleware.rb,
app/interactors/sbmt/outbox/partition_strategies/hash_partitioning.rb,
lib/sbmt/outbox/middleware/sentry/tracing_batch_process_middleware.rb,
app/interactors/sbmt/outbox/partition_strategies/number_partitioning.rb,
lib/sbmt/outbox/middleware/open_telemetry/tracing_create_item_middleware.rb,
lib/sbmt/outbox/middleware/open_telemetry/tracing_item_process_middleware.rb
Defined Under Namespace
Modules: AsciiArt, Instrumentation, Middleware, PartitionStrategies, Probes, RedisClientFactory, RetryStrategies
Classes: BaseCreateItem, BaseDeleteStaleItemsJob, BaseItem, BaseItemConfig, CLI, ConfigError, CreateInboxItem, CreateOutboxItem, DatabaseError, DatabaseSwitcher, DeleteStaleInboxItemsJob, DeleteStaleOutboxItemsJob, DryInteractor, Engine, Error, ErrorTracker, InboxItem, InboxItemConfig, Logger, OutboxItem, OutboxItemConfig, ProcessItem, ThreadPool, Throttler, Worker
Constant Summary
collapse
- VERSION =
"5.0.1"
Class Attribute Summary collapse
Class Method Summary
collapse
Class Attribute Details
.current_worker ⇒ Object
Returns the value of attribute current_worker.
43
44
45
|
# File 'lib/sbmt/outbox.rb', line 43
def current_worker
@current_worker
end
|
Class Method Details
.active_job_base_class ⇒ Object
60
61
62
|
# File 'lib/sbmt/outbox.rb', line 60
def active_job_base_class
@active_job_base_class ||= config.active_job_base_class.safe_constantize || ActiveJob::Base
end
|
.active_record_base_class ⇒ Object
56
57
58
|
# File 'lib/sbmt/outbox.rb', line 56
def active_record_base_class
@active_record_base_class ||= config.active_record_base_class.safe_constantize || ActiveRecord::Base
end
|
.batch_process_middlewares ⇒ Object
124
125
126
|
# File 'lib/sbmt/outbox.rb', line 124
def batch_process_middlewares
@batch_process_middlewares ||= config.batch_process_middlewares.map(&:constantize)
end
|
.config ⇒ Object
48
49
50
|
# File 'lib/sbmt/outbox.rb', line 48
def config
@config ||= Rails.application.config.outbox
end
|
.create_item_middlewares ⇒ Object
132
133
134
|
# File 'lib/sbmt/outbox.rb', line 132
def create_item_middlewares
@create_item_middlewares ||= config.create_item_middlewares.map(&:constantize)
end
|
.database_switcher ⇒ Object
68
69
70
|
# File 'lib/sbmt/outbox.rb', line 68
def database_switcher
@database_switcher ||= config.database_switcher.constantize
end
|
.error_tracker ⇒ Object
64
65
66
|
# File 'lib/sbmt/outbox.rb', line 64
def error_tracker
@error_tracker ||= config.error_tracker.constantize
end
|
.inbox_item_classes ⇒ Object
80
81
82
83
84
85
86
|
# File 'lib/sbmt/outbox.rb', line 80
def inbox_item_classes
@inbox_item_classes ||= if config.inbox_item_classes.empty?
(yaml_config[:inbox_items] || {}).keys.map { |name| name.camelize.constantize }
else
config.inbox_item_classes.map(&:constantize)
end
end
|
.item_classes ⇒ Object
88
89
90
|
# File 'lib/sbmt/outbox.rb', line 88
def item_classes
@item_classes ||= outbox_item_classes + inbox_item_classes
end
|
.item_classes_by_name ⇒ Object
92
93
94
|
# File 'lib/sbmt/outbox.rb', line 92
def item_classes_by_name
@item_classes_by_name ||= item_classes.index_by(&:box_name)
end
|
.item_process_middlewares ⇒ Object
128
129
130
|
# File 'lib/sbmt/outbox.rb', line 128
def item_process_middlewares
@item_process_middlewares ||= config.item_process_middlewares.map(&:constantize)
end
|
.load_yaml(path) ⇒ Object
112
113
114
115
116
117
118
119
120
121
122
|
# File 'lib/sbmt/outbox.rb', line 112
def load_yaml(path)
data = if Gem::Version.new(Psych::VERSION) >= Gem::Version.new("4.0.0")
YAML.safe_load(ERB.new(File.read(path)).result, aliases: true)
else
YAML.safe_load(ERB.new(File.read(path)).result, [], [], true)
end
data
.with_indifferent_access
.fetch(Rails.env, {})
end
|
.logger ⇒ Object
52
53
54
|
# File 'lib/sbmt/outbox.rb', line 52
def logger
@logger ||= Sbmt::Outbox::Logger.new
end
|
.outbox_item_classes ⇒ Object
72
73
74
75
76
77
78
|
# File 'lib/sbmt/outbox.rb', line 72
def outbox_item_classes
@outbox_item_classes ||= if config.outbox_item_classes.empty?
(yaml_config[:outbox_items] || {}).keys.map { |name| name.camelize.constantize }
else
config.outbox_item_classes.map(&:constantize)
end
end
|
.yaml_config ⇒ Object
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
|
# File 'lib/sbmt/outbox.rb', line 96
def yaml_config
return @yaml_config if defined?(@yaml_config)
paths = if config.paths.empty?
[Rails.root.join("config/outbox.yml").to_s]
else
config.paths
end
@yaml_config = paths.each_with_object({}.with_indifferent_access) do |path, memo|
memo.deep_merge!(
load_yaml(path)
)
end
end
|