Class: SolidObjects::CommitActionRegistry

Inherits:
Object
  • Object
show all
Defined in:
lib/solid_objects/commit_action_registry.rb,
sig/generated/lib/solid_objects/commit_action_registry.rbs

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeCommitActionRegistry

Returns a new instance of CommitActionRegistry.

RBS:

  • () -> void



17
18
19
20
# File 'lib/solid_objects/commit_action_registry.rb', line 17

def initialize
  @handlers = {}
  @mutex = Mutex.new
end

Instance Attribute Details

#handlersObject (readonly)

Returns the value of attribute handlers.

Returns:

  • (Object)


40
41
42
# File 'lib/solid_objects/commit_action_registry.rb', line 40

def handlers
  @handlers
end

#mutexObject (readonly)

Returns the value of attribute mutex.

Returns:

  • (Object)


40
41
42
# File 'lib/solid_objects/commit_action_registry.rb', line 40

def mutex
  @mutex
end

Instance Method Details

#fetch(name) ⇒ Proc

RBS:

  • (String | Symbol) -> Proc

Parameters:

  • (String, Symbol)

Returns:

  • (Proc)


32
33
34
35
36
# File 'lib/solid_objects/commit_action_registry.rb', line 32

def fetch(name)
  handlers.fetch(name.to_s) do
    raise UnknownCommitAction, "no commit action registered for #{name.inspect}"
  end
end

#register(name, handler) ⇒ Proc

RBS:

  • (String | Symbol, Proc) -> Proc

Parameters:

  • (String, Symbol)
  • (Proc)

Returns:

  • (Proc)


23
24
25
26
27
28
29
# File 'lib/solid_objects/commit_action_registry.rb', line 23

def register(name, handler)
  action_name = name.to_s
  raise ArgumentError, "commit action name cannot be empty" if action_name.empty?

  mutex.synchronize { handlers[action_name] = handler }
  handler
end