Module: Legion::Extensions::Actors::Base

Extended by:
Dsl
Includes:
Helpers::Lex
Included in:
Every, Loop, Nothing, Once, Poll, Subscription
Defined in:
lib/legion/extensions/actors/base.rb

Constant Summary

Constants included from Helpers::Base

Helpers::Base::NAMESPACE_BOUNDARIES

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Dsl

define_dsl_accessor

Methods included from Helpers::Lex

#default_settings, #runner_desc

Methods included from Helpers::Base

#actor_class, #actor_const, #actor_name, #amqp_prefix, #calling_class, #calling_class_array, #from_json, #full_path, #lex_class, #lex_const, #lex_name, #lex_slug, #log_tag, #normalize, #runner_class, #runner_const, #runner_name, #segments, #settings_path, #table_prefix, #to_dotted_hash

Methods included from Helpers::Task

#generate_task_id, #generate_task_log, #task_update

Methods included from Helpers::Logger

#handle_runner_exception

Methods included from Helpers::Secret

reset_identity!, resolve_identity!, #secret

Methods included from Helpers::Core

#find_setting

Class Method Details

.included(base) ⇒ Object



44
45
46
47
48
49
50
51
# File 'lib/legion/extensions/actors/base.rb', line 44

def self.included(base)
  base.extend(Legion::Extensions::Actors::Dsl) unless base.singleton_class.include?(Legion::Extensions::Actors::Dsl)
  base.define_dsl_accessor(:use_runner, default: true) unless base.respond_to?(:use_runner)
  base.define_dsl_accessor(:check_subtask, default: true) unless base.respond_to?(:check_subtask)
  base.define_dsl_accessor(:generate_task, default: false) unless base.respond_to?(:generate_task)
  base.define_dsl_accessor(:enabled, default: true) unless base.respond_to?(:enabled)
  base.define_dsl_accessor(:remote_invocable, default: true) unless base.respond_to?(:remote_invocable)
end

Instance Method Details

#argsObject



57
58
59
# File 'lib/legion/extensions/actors/base.rb', line 57

def args
  {}
end

#check_subtask?Boolean

Returns:

  • (Boolean)


61
62
63
# File 'lib/legion/extensions/actors/base.rb', line 61

def check_subtask?
  self.class.respond_to?(:check_subtask) ? self.class.check_subtask : true
end

#enabled?Boolean

Returns:

  • (Boolean)


69
70
71
# File 'lib/legion/extensions/actors/base.rb', line 69

def enabled?
  self.class.respond_to?(:enabled) ? self.class.enabled : true
end

#functionObject



40
41
42
# File 'lib/legion/extensions/actors/base.rb', line 40

def function
  nil
end

#generate_task?Boolean

Returns:

  • (Boolean)


65
66
67
# File 'lib/legion/extensions/actors/base.rb', line 65

def generate_task?
  self.class.respond_to?(:generate_task) ? self.class.generate_task : false
end

#manualObject



27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/legion/extensions/actors/base.rb', line 27

def manual
  klass = runner_class
  klass = Kernel.const_get(klass) if klass.is_a?(String)
  func = respond_to?(:runner_function) ? runner_function : :action
  if klass == self.class
    send(func, **args)
  else
    klass.send(func, **args)
  end
rescue StandardError => e
  handle_exception(e)
end

#remote_invocable?Boolean

Returns:

  • (Boolean)


73
74
75
# File 'lib/legion/extensions/actors/base.rb', line 73

def remote_invocable?
  self.class.respond_to?(:remote_invocable) ? self.class.remote_invocable : true
end

#runnerObject



18
19
20
21
22
23
24
25
# File 'lib/legion/extensions/actors/base.rb', line 18

def runner
  with_log_context(function) do
    Legion::Runner.run(runner_class: runner_class, function: function,
                       check_subtask: check_subtask?, generate_task: generate_task?)
  end
rescue StandardError => e
  handle_exception(e)
end

#use_runner?Boolean

Returns:

  • (Boolean)


53
54
55
# File 'lib/legion/extensions/actors/base.rb', line 53

def use_runner?
  self.class.respond_to?(:use_runner) ? self.class.use_runner : true
end