Module: Async::Enumerable::Configurable::ClassMethods

Defined in:
lib/async/enumerable/configurable.rb

Overview

Class methods for defining async enumerable sources

Instance Method Summary collapse

Instance Method Details

#__async_enumerable_collection_refSymbol?

Gets the collection reference from config.

Returns:

  • (Symbol, nil)

    Collection reference



48
49
50
# File 'lib/async/enumerable/configurable.rb', line 48

def __async_enumerable_collection_ref
  __async_enumerable_config.collection_ref
end

#__async_enumerable_configConfig

Gets config with class-level overrides merged.

Returns:

  • (Config)

    Merged configuration



54
55
56
57
58
59
60
61
62
# File 'lib/async/enumerable/configurable.rb', line 54

def __async_enumerable_config
  # Dynamically merge module config with class overrides
  base = Async::Enumerable.config
  if @__async_enumerable_class_overrides
    base.with(**@__async_enumerable_class_overrides)
  else
    base
  end
end

#__async_enumerable_config_refnil

Returns nil as classes don't cache config refs.

Returns:

  • (nil)

    Always nil for class level



66
67
68
# File 'lib/async/enumerable/configurable.rb', line 66

def __async_enumerable_config_ref
  nil
end

#def_async_enumerable(collection_ref = nil, **kwargs) ⇒ Object

Defines enumerable source for async operations.

Parameters:

  • collection_ref (Symbol) (defaults to: nil)

    Method/ivar returning enumerable

  • kwargs (Hash)

    Configuration options (max_fibers, etc.)



41
42
43
44
# File 'lib/async/enumerable/configurable.rb', line 41

def def_async_enumerable(collection_ref = nil, **kwargs)
  # Store only the class-specific overrides, not a full config
  @__async_enumerable_class_overrides = {collection_ref:}.compact.merge(kwargs)
end