Class: Silicon::Chain

Inherits:
Object
  • Object
show all
Defined in:
lib/silicon/chain.rb

Instance Method Summary collapse

Constructor Details

#initialize(container, silicon_config, commands, catch_command = nil) ⇒ Chain

Returns a new instance of Chain.



5
6
7
8
9
10
# File 'lib/silicon/chain.rb', line 5

def initialize(container, silicon_config, commands, catch_command = nil)
  @commands = commands
  @container = container
  @catch_command = catch_command
  @async_timeout = silicon_config[:action][:async_timeout]
end

Instance Method Details

#executeObject



12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/silicon/chain.rb', line 12

def execute
  if @catch_command.nil?
    run_commands
  else
    begin
      run_commands
    rescue Exception => error
      @container
        .register_instance(error, :silicon_error)
        .using_lifetime(:scope)
        .bound_to(:silicon_request)

      action = @container.resolve(@catch_command.name.to_sym)
      action.call
    end
  end
end