lib/arc-furnace/pipeline.rb in arc-furnace-0.1.5 vs lib/arc-furnace/pipeline.rb in arc-furnace-0.1.6
- old
+ new
@@ -97,12 +97,21 @@
PipelineInstance.new(self, params)
end
private
+ ALLOWABLE_PARAM_TYPES = [:key, :keyreq].freeze
+
def self.define_intermediate(node_id, type:, params:)
intermediates_map[node_id] = -> do
- type.new(resolve_parameters(node_id, params))
+ resolved_params = resolve_parameters(node_id, params)
+ key_parameters = type.instance_method(:initialize).parameters do |param|
+ ALLOWABLE_PARAM_TYPES.include?(param.first)
+ end.map(&:second)
+ # Allow params to be passed that are not in the initializer
+ instance = type.new(resolved_params.slice(*key_parameters))
+ instance.params = resolved_params
+ instance
end
end
class PipelineInstance
attr_reader :sink_node, :sink_source, :intermediates_map, :params, :dsl_class, :error_handler