Sha256: 083dce25a2615bf4fee5d0468728980a36d82175b5d20e26c4a25dedb70583c4

Contents?: true

Size: 1.03 KB

Versions: 16

Compression:

Stored size: 1.03 KB

Contents

# frozen_string_literal: true

require "anycable/broadcast_adapters/base"

module AnyCable
  module BroadcastAdapters
    module_function

    def lookup_adapter(args)
      adapter, options = Array(args)
      path_to_adapter = "anycable/broadcast_adapters/#{adapter}"
      adapter_class_name = adapter.to_s.split("_").map(&:capitalize).join

      unless BroadcastAdapters.const_defined?(adapter_class_name, false)
        begin
          require path_to_adapter
        rescue LoadError => e
          # We couldn't require the adapter itself.
          if e.path == path_to_adapter
            raise e.class, "Couldn't load the '#{adapter}' broadcast adapter for AnyCable",
              e.backtrace || []
          # Bubbled up from the adapter require.
          else
            raise e.class, "Error loading the '#{adapter}' broadcast adapter for AnyCable",
              e.backtrace || []
          end
        end
      end

      options ||= {}
      BroadcastAdapters.const_get(adapter_class_name, false).new(**options)
    end
  end
end

Version data entries

16 entries across 16 versions & 1 rubygems

Version Path
anycable-core-1.6.0.rc.1 lib/anycable/broadcast_adapters.rb
anycable-core-1.5.2 lib/anycable/broadcast_adapters.rb
anycable-core-1.5.1 lib/anycable/broadcast_adapters.rb
anycable-core-1.5.0 lib/anycable/broadcast_adapters.rb
anycable-core-1.4.4 lib/anycable/broadcast_adapters.rb
anycable-core-1.5.0.rc.1 lib/anycable/broadcast_adapters.rb
anycable-core-1.4.3 lib/anycable/broadcast_adapters.rb
anycable-core-1.4.2 lib/anycable/broadcast_adapters.rb
anycable-core-1.4.1 lib/anycable/broadcast_adapters.rb
anycable-core-1.4.0 lib/anycable/broadcast_adapters.rb
anycable-core-1.4.0.rc.3 lib/anycable/broadcast_adapters.rb
anycable-core-1.4.0.rc.2 lib/anycable/broadcast_adapters.rb
anycable-core-1.4.0.rc.1 lib/anycable/broadcast_adapters.rb
anycable-core-1.4.0.pre.rc.1 lib/anycable/broadcast_adapters.rb
anycable-core-1.3.1 lib/anycable/broadcast_adapters.rb
anycable-core-1.3.0 lib/anycable/broadcast_adapters.rb