diff --git a/lib/red_storm/simple_bolt.rb b/lib/red_storm/simple_bolt.rb index 19ffaa8..f793d0a 100644 --- a/lib/red_storm/simple_bolt.rb +++ b/lib/red_storm/simple_bolt.rb @@ -39,8 +39,8 @@ module RedStorm def execute(tuple) if (output = instance_exec(tuple, &self.class.on_receive_block)) && self.class.emit? - values = [output].flatten - self.class.anchor? ? @collector.emit(tuple, Values.new(*values)) : emit(*values) + values_list = !output.is_a?(Array) ? [[output]] : !output.first.is_a?(Array) ? [output] : output + values_list.each{|values| self.class.anchor? ? @collector.emit(tuple, Values.new(*values)) : @collector.emit(Values.new(*values))} @collector.ack(tuple) if self.class.ack? end end diff --git a/spec/red_storm/simple_bolt_spec.rb b/spec/red_storm/simple_bolt_spec.rb index 5559bee..61ff6bf 100644 --- a/spec/red_storm/simple_bolt_spec.rb +++ b/spec/red_storm/simple_bolt_spec.rb @@ -297,7 +297,7 @@ describe RedStorm::SimpleBolt do class RedStorm::Values; end - it "should auto emit on single value output" do + it "should auto single emit on single value output" do class Bolt1 < RedStorm::SimpleBolt on_receive {|tuple| tuple} end @@ -326,7 +326,7 @@ describe RedStorm::SimpleBolt do bolt.execute("output") end - it "should auto emit on multiple value output" do + it "should auto single emit on multiple value output" do class Bolt1 < RedStorm::SimpleBolt on_receive {|tuple| tuple} end