instance method prohibit_shard_swapping

Ruby on Rails edge

Since v7.0.10

Available in: v7.0.10 v7.1.6 v7.2.3.2 v8.0.5.1 v8.1.3.1 edge

Signature

prohibit_shard_swapping(enabled = true)

Prohibit swapping shards while inside of the passed block.

In some cases you may want to be able to swap shards but not allow a nested call to connected_to or connected_to_many to swap again. This is useful in cases you’re using sharding to provide per-request database isolation.

Parameters

enabled opt = true
Source
# File activerecord/lib/active_record/connection_handling.rb, line 233
    def prohibit_shard_swapping(enabled = true)
      ActiveSupport::IsolatedExecutionState[:active_record_prohibit_shard_swapping] ||= Set.new
      prev_value = ActiveSupport::IsolatedExecutionState[:active_record_prohibit_shard_swapping]
      if enabled
        ActiveSupport::IsolatedExecutionState[:active_record_prohibit_shard_swapping] = prev_value.dup.add(connection_specification_name)
      else
        ActiveSupport::IsolatedExecutionState[:active_record_prohibit_shard_swapping] = prev_value.dup.delete(connection_specification_name)
      end
      yield
    ensure
      ActiveSupport::IsolatedExecutionState[:active_record_prohibit_shard_swapping] = prev_value
    end

Defined in activerecord/lib/active_record/connection_handling.rb line 233 · View on GitHub · Improve this page · Find usages on GitHub

Defined in ActiveRecord::ConnectionHandling

Type at least 2 characters to search.

Use the arrow keys to navigate results, Enter to open one, Escape to close.

Keyboard shortcuts

/
Focus search
⌘K / Ctrl-K
Command palette
?
This help
Esc
Close