Class: Riakpb::MapReduce::Phase
- Inherits:
-
Object
- Object
- Riakpb::MapReduce::Phase
- Includes:
- Util::Translation
- Defined in:
- lib/riakpb/map_reduce.rb
Overview
Represents an individual phase in a map-reduce pipeline. Generally you’ll want to call methods of Riakpb::MapReduce instead of using this directly.
Instance Attribute Summary collapse
-
#arg ⇒ Array
Any extra static arguments to pass to the phase.
-
#function ⇒ String, ...
For :map and :reduce types, the Javascript function to run (as a string or hash with bucket/key), or the module + function in Erlang to run.
-
#keep ⇒ Boolean
Whether results of this phase will be returned.
-
#language ⇒ String
The language of the phase’s function - “javascript” or “erlang”.
-
#type ⇒ Symbol
The type of phase - :map, :reduce, or :link.
Instance Method Summary collapse
-
#as_json(options = nil) ⇒ Hash
Converts the phase to its JSON-compatible representation for job invocation.
-
#initialize(options = {}) ⇒ Phase
constructor
Creates a phase in the map-reduce pipeline.
-
#to_json(options = nil) ⇒ String
Converts the phase to JSON for use while invoking a job.
Methods included from Util::Translation
Constructor Details
#initialize(options = {}) ⇒ Phase
Creates a phase in the map-reduce pipeline
157 158 159 160 161 162 163 |
# File 'lib/riakpb/map_reduce.rb', line 157 def initialize(={}) self.type = [:type] self.language = [:language] || "javascript" self.function = [:function] self.keep = [:keep] || false self.arg = [:arg] end |
Instance Attribute Details
#arg ⇒ Array
Returns any extra static arguments to pass to the phase.
148 149 150 |
# File 'lib/riakpb/map_reduce.rb', line 148 def arg @arg end |
#function ⇒ String, ...
Returns For :map and :reduce types, the Javascript function to run (as a string or hash with bucket/key), or the module + function in Erlang to run. For a :link type, a WalkSpec or an equivalent hash.
139 140 141 |
# File 'lib/riakpb/map_reduce.rb', line 139 def function @function end |
#keep ⇒ Boolean
Returns whether results of this phase will be returned.
145 146 147 |
# File 'lib/riakpb/map_reduce.rb', line 145 def keep @keep end |
#language ⇒ String
Returns the language of the phase’s function - “javascript” or “erlang”. Meaningless for :link type phases.
142 143 144 |
# File 'lib/riakpb/map_reduce.rb', line 142 def language @language end |
#type ⇒ Symbol
Returns the type of phase - :map, :reduce, or :link.
136 137 138 |
# File 'lib/riakpb/map_reduce.rb', line 136 def type @type end |
Instance Method Details
#as_json(options = nil) ⇒ Hash
Converts the phase to its JSON-compatible representation for job invocation.
194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 |
# File 'lib/riakpb/map_reduce.rb', line 194 def as_json(=nil) obj = case type when :map, :reduce defaults = {:language => language, :keep => keep} case function when Hash defaults.merge(function) when String if function =~ /\s*function/ defaults.merge("source" => function) else defaults.merge("name" => function) end when Array defaults.merge("module" => function[0], "function" => function[1]) end when :link function.merge({:keep => keep}) end obj["arg"] = arg if arg { type => obj } end |
#to_json(options = nil) ⇒ String
Converts the phase to JSON for use while invoking a job.
188 189 190 |
# File 'lib/riakpb/map_reduce.rb', line 188 def to_json(=nil) ActiveSupport::JSON.encode(as_json, ) end |