Class: Jets::Processors::Deducer
- Inherits:
-
Object
- Object
- Jets::Processors::Deducer
- Defined in:
- lib/jets/processors/deducer.rb
Overview
Jets::Processors::Deducer class figures out information that allows the controller or job to be called. Sme key methods for deducer:
code - code to instance eval. IE: PostsController.new(event, context).index
path - full path to the app code. IE: #{Jets.root}app/controllers/posts_controller.rb
Instance Method Summary collapse
-
#class_name ⇒ Object
Example underscored_class_name: class_name = underscored_class_name class_name = class_name # PostsController.
- #code ⇒ Object
-
#initialize(handler) ⇒ Deducer
constructor
A new instance of Deducer.
- #load_class ⇒ Object
-
#path ⇒ Object
Input: @handler_path: handlers/jobs/hard_job.rb Output: #{Jets.root/app/jobs/hard_job.rb.
-
#process_type ⇒ Object
process_type is key.
- #shared? ⇒ Boolean
Constructor Details
#initialize(handler) ⇒ Deducer
Returns a new instance of Deducer.
8 9 10 11 12 13 |
# File 'lib/jets/processors/deducer.rb', line 8 def initialize(handler) @handler = handler # handlers/controllers/posts.show # @handler_path: "handlers/controllers/posts" # @handler_method: "show" @handler_path, @handler_method = @handler.split('.') end |
Instance Method Details
#class_name ⇒ Object
Example underscored_class_name:
class_name = underscored_class_name
class_name = class_name # PostsController
44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
# File 'lib/jets/processors/deducer.rb', line 44 def class_name regexp = shared? ? Regexp.new(".*handlers/shared/functions/") : Regexp.new(".*handlers/#{process_type.pluralize}/") # Example regexp: # /.*handlers\/controllers\// # /.*handlers\/jobs\// class_name = @handler_path.sub(regexp, "") # Example class names: # posts_controller # hard_job # hello # hello_function class_name.camelize end |
#code ⇒ Object
15 16 17 18 19 |
# File 'lib/jets/processors/deducer.rb', line 15 def code # code: "PostsController.process(event, context, meth: "show")" # code: "HardJob.process(event, context, meth: "dig")" %|#{class_name}.process(event, context, "#{@handler_method}")| end |
#load_class ⇒ Object
62 63 64 |
# File 'lib/jets/processors/deducer.rb', line 62 def load_class Jets::Klass.from_path(path) end |
#path ⇒ Object
Input: @handler_path: handlers/jobs/hard_job.rb Output: #{Jets.root/app/jobs/hard_job.rb
23 24 25 |
# File 'lib/jets/processors/deducer.rb', line 23 def path @handler_path.sub("handlers", "app") + ".rb" end |
#process_type ⇒ Object
process_type is key. It can be either “controller” or “job”. It is used to deduce the rest of the methods: code, path.
29 30 31 32 33 34 35 |
# File 'lib/jets/processors/deducer.rb', line 29 def process_type if shared? "function" # all app/shared/functions are always function process_type else @handler.split('/')[1].singularize # controller, job, rule, etc end end |
#shared? ⇒ Boolean
37 38 39 |
# File 'lib/jets/processors/deducer.rb', line 37 def shared? @handler.include?("/shared/functions") end |