Class Yapra::Pipeline
In: lib/yapra/pipeline.rb
Parent: Yapra::PipelineBase

Methods

Constants

UPPER_CASE = /[A-Z]/

Attributes

legacy_plugin_registry  [RW] 

Public Instance methods

[Source]

    # 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'
      }
    ])

[Source]

    # 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

Protected Instance methods

[Source]

    # 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

[Source]

    # 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

[Source]

    # 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

[Source]

    # File lib/yapra/pipeline.rb, line 65
65:   def run_legacy_plugin command, data
66:     self.logger.debug("evaluate plugin as legacy")
67:     data = legacy_plugin_registry.get(command['module'])._yapra_run_as_legacy_plugin(command['config'], data)
68:     return data
69:   end

[Validate]