Sha256: 201ed0a98a8db3da475426679ae907e1cf0edd6a401f5d78c203d3fa06aa9bde

Contents?: true

Size: 1.25 KB

Versions: 1

Compression:

Stored size: 1.25 KB

Contents

require 'octoshark/version'
require 'active_record'
require 'octoshark/active_record_extensions'

module Octoshark
  autoload :ConnectionSwitcher, 'octoshark/connection_switcher'

  class NotConfiguredError < RuntimeError; end
  class NoConnectionError < StandardError; end;
  class NoCurrentConnectionError < StandardError; end;

  OCTOSHARK = :octoshark

  class << self
    delegate :connection_pools,
      :current_or_default_connection,
      :disconnect!,
      :find_connection_pool,
      :with_connection,
      :current_connection,
      :current_connection?,
      to: :switcher

    def configure(configs)
      @configs = configs
      @switcher = ConnectionSwitcher.new(configs)
    end

    def reset!
      return unless configured?
      disconnect!
      @confings = nil
      @switcher = nil
      Thread.current[OCTOSHARK] = nil
    end

    def reload!
      raise_not_configured_error unless @configs
      disconnect!
      @switcher = ConnectionSwitcher.new(@configs)
    end

    def configured?
      !@switcher.nil?
    end

    def switcher
      @switcher || raise_not_configured_error
    end

    private
    def raise_not_configured_error
      raise NotConfiguredError, "Octoshark is not configured, use Octoshark.configure"
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
octoshark-0.0.8 lib/octoshark.rb