Class: SidekiqActiveRecordShard::Server
- Inherits:
-
Object
- Object
- SidekiqActiveRecordShard::Server
- Includes:
- Sidekiq::ServerMiddleware
- Defined in:
- lib/sidekiq-activerecord-shard/middleware.rb
Instance Method Summary collapse
- #call(_jobclass, job, _queue, &block) ⇒ Object
-
#set_shard(shard, &block) ⇒ Object
Inspired by ActiveRecord::Middleware::ShardSelector https://github.com/rails/rails/blob/v7.0.3/activerecord/lib/active_record/middleware/shard_selector.rb#L54.
Instance Method Details
#call(_jobclass, job, _queue, &block) ⇒ Object
22 23 24 25 26 27 28 |
# File 'lib/sidekiq-activerecord-shard/middleware.rb', line 22 def call(_jobclass, job, _queue, &block) if job["shard"].nil? yield else set_shard(job["shard"], &block) end end |
#set_shard(shard, &block) ⇒ Object
Inspired by ActiveRecord::Middleware::ShardSelector https://github.com/rails/rails/blob/v7.0.3/activerecord/lib/active_record/middleware/shard_selector.rb#L54
32 33 34 35 36 37 38 |
# File 'lib/sidekiq-activerecord-shard/middleware.rb', line 32 def set_shard(shard, &block) = Rails.application.config.active_record.shard_selector ActiveRecord::Base.connected_to(shard: shard.to_sym) do ActiveRecord::Base.prohibit_shard_swapping(.fetch(:lock, true), &block) end end |