Class | Yapra::Pipeline |
In: |
lib/yapra/pipeline.rb
|
Parent: | Yapra::PipelineBase |
UPPER_CASE | = | /[A-Z]/ |
legacy_plugin_registry | [RW] |
# File lib/yapra/pipeline.rb, line 51 51: def execute_plugin command, data 52: self.logger.info("exec plugin #{command["module"]}") 53: if class_based_plugin?(command['module']) 54: run_class_based_plugin command, data 55: else 56: run_legacy_plugin command, data 57: end 58: end
start pipeline from commands.
example:
pipeline.run([ { 'module' => 'Config::agent', 'config' => { 'user_agent_alias' => 'Windows IE 6' } }, { 'module' => 'RSS::load', 'config' => { 'uri' => 'http://www.example.com/hoge.rdf' } }, { 'module' => 'print' } ])
# File lib/yapra/pipeline.rb, line 33 33: def run pipeline_command, data=[] 34: @plugins = [] 35: begin 36: pipeline_command.inject(data) do |data, command| 37: execute_plugin(command, data.clone) 38: end 39: rescue => ex 40: @plugins.each do |plugin| 41: begin 42: plugin.on_error(ex) if plugin.respond_to?('on_error') 43: rescue => exx 44: self.logger.error("error is occured when error handling: #{exx.message}") 45: end 46: end 47: raise ex 48: end 49: end
# File lib/yapra/pipeline.rb, line 61 61: def class_based_plugin? command_name 62: UPPER_CASE =~ command_name.split('::').last[0, 1] 63: end
# File lib/yapra/pipeline.rb, line 83 83: def raise_load_error load_error_stack, command 84: load_error = LoadError.new("#{command['module']} module is not found.") 85: backtrace = load_error.backtrace || [] 86: load_error_stack.each do |e| 87: backtrace << "#{e.class.name} in '#{e.message}'" 88: backtrace = backtrace + e.backtrace 89: end 90: load_error.set_backtrace(backtrace) 91: raise load_error 92: end
# File lib/yapra/pipeline.rb, line 71 71: def run_class_based_plugin command, data 72: self.logger.debug("evaluate plugin as class based") 73: plugin = load(command['module']) 74: 75: # yml pipeline specific. 76: plugin.plugin_config = command['config'] if plugin.respond_to?('plugin_config=') 77: 78: @plugins << plugin 79: data = plugin.run(data) 80: return data 81: end