Module: ExecutionDeadline::Deadliner
- Defined in:
- lib/execution_deadline/deadliner.rb
Constant Summary collapse
- WRAPPED_METHOD =
Proc.new do || Proc.new do |*args, **kwargs, &blk| set_deadline = [:in] && ExecutionDeadline.set_deadline( expires_at: Time.now + [:in], raises: [:raises] ) current_deadline = ExecutionDeadline.current_deadline current_deadline&.require_seconds_left!([:runs_for]) if [:runs_for] result = if ![:interruptible] super(*args, **kwargs, &blk) else Timeout.timeout(current_deadline&.time_left) do super(*args, **kwargs, &blk) rescue => Timeout::Error end end current_deadline&.check_deadline_expiration! result ensure ExecutionDeadline.clear_deadline! if set_deadline end end
Instance Method Summary collapse
- #_execution_deadline_built_for ⇒ Object
- #_execution_deadline_built_for=(val) ⇒ Object
- #inspect ⇒ Object
- #wrap_implementation(method_name, config) ⇒ Object
Instance Method Details
#_execution_deadline_built_for ⇒ Object
36 37 38 |
# File 'lib/execution_deadline/deadliner.rb', line 36 def _execution_deadline_built_for @_execution_deadline_built_for end |
#_execution_deadline_built_for=(val) ⇒ Object
40 41 42 |
# File 'lib/execution_deadline/deadliner.rb', line 40 def _execution_deadline_built_for=(val) @_execution_deadline_built_for = val end |
#inspect ⇒ Object
32 33 34 |
# File 'lib/execution_deadline/deadliner.rb', line 32 def inspect "ExecutionDeadline::#{@_execution_deadline_built_for}Proxy" end |
#wrap_implementation(method_name, config) ⇒ Object
44 45 46 |
# File 'lib/execution_deadline/deadliner.rb', line 44 def wrap_implementation(method_name, config) define_method(method_name, &WRAPPED_METHOD.call(config)) end |