Class: Delorean::BaseModule::NodeCall
- Inherits:
-
Object
- Object
- Delorean::BaseModule::NodeCall
- Defined in:
- lib/marty/monkey.rb
Overview
Patch Delorean to work with promises
Instance Method Summary collapse
-
#initialize(_e, engine, node, params) ⇒ NodeCall
constructor
A new instance of NodeCall.
-
#|(args) ⇒ Object
Monkey-patch ‘|’ method for Delorean NodeCall to create promise jobs and return promise proxy objects.
Constructor Details
#initialize(_e, engine, node, params) ⇒ NodeCall
Returns a new instance of NodeCall.
28 29 30 31 32 33 34 35 |
# File 'lib/marty/monkey.rb', line 28 def initialize(_e, engine, node, params) super # If call has a promise_id (i.e. is from a promise) then that's # our parent. Otherwise, we use its parent as our parent. params[:_parent_id] = _e[:_promise_id] || _e[:_parent_id] params[:_user_id] = _e[:_user_id] || Mcfly.whodunnit.try(:id) end |
Instance Method Details
#|(args) ⇒ Object
Monkey-patch ‘|’ method for Delorean NodeCall to create promise jobs and return promise proxy objects.
43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 |
# File 'lib/marty/monkey.rb', line 43 def |(args) if args.is_a?(String) attr = args args = [attr] else raise 'bad arg to %' unless args.is_a?(Array) attr = nil end script, tag = engine.module_name, engine.sset.tag nn = node.is_a?(Class) ? node.name : node.to_s begin # make sure params is serialzable before starting a Job JSON.dump(params) rescue StandardError => e raise "non-serializable parameters: #{params} #{e}" end Marty::Promises::Delorean::Create.call( params: params, script: script, node_name: nn, attr: attr, args: args, tag: tag ) end |