Sha256: 0c3309ba115b1b4aa65630306d5b3e5f657ca279a4008bab6fb2344dce28f246

Contents?: true

Size: 767 Bytes

Versions: 6

Compression:

Stored size: 767 Bytes

Contents

module ActiveRecord::Turntable
  class SequencerRegistry
    attr_reader :sequencers
    alias_method :all, :sequencers

    def initialize
      @sequencers = {}.with_indifferent_access
      @cluster_sequencers = {}.with_indifferent_access
    end

    def add(name, type, options, cluster)
      # TODO: Warn if defined the same name sequencer already.
      sequencer = (@sequencers[name] ||= Sequencer.class_for(type).new(options))
      @cluster_sequencers[cluster] ||= {}.with_indifferent_access
      @cluster_sequencers[cluster][name] ||= sequencer
    end

    def release!
      @sequencers.each(&:release!)
    end

    def [](name)
      @sequencers[name]
    end

    def cluster_sequencers(cluster)
      @cluster_sequencers[cluster]
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
activerecord-turntable-4.4.1 lib/active_record/turntable/sequencer_registry.rb
activerecord-turntable-4.4.0 lib/active_record/turntable/sequencer_registry.rb
activerecord-turntable-4.3.0 lib/active_record/turntable/sequencer_registry.rb
activerecord-turntable-4.2.0 lib/active_record/turntable/sequencer_registry.rb
activerecord-turntable-4.1.0 lib/active_record/turntable/sequencer_registry.rb
activerecord-turntable-4.0.0 lib/active_record/turntable/sequencer_registry.rb