streamingly 0.2.4 → 0.2.6

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 457684ce6e8d5dcbfcdd75109553506abad640f0
4
- data.tar.gz: c6164ac662cac7e76bde51fed2815b70dbeb3d70
3
+ metadata.gz: eb1beb209148a563eaf9fc4f4d635607aceeebe3
4
+ data.tar.gz: 8631b810159e70ad32b5b2f34d5c811f1867cec5
5
5
  SHA512:
6
- metadata.gz: 349c229ca5a8e0d843675b472232331d23d98ddd4570fcbeb18c1d9e09ef35d188252ab550aca1f42ec5208b437f35dfa99b961f7f81dcad9d1e1200c746813d
7
- data.tar.gz: 576499b30eca318bea397c193321003f1e896ff9127425e48e24a4d1488deafbc92e017165810973c05787a75330aaa7e92a9babe548c081d105419b018465a2
6
+ metadata.gz: 50b045493f03acd398b1ab93955472b93c07842b01e6446bd338250c224652b0d4a5d4a1f14e04c8d476ecb63a16954fc356742f82e16b55877f2ddbeb6e2988
7
+ data.tar.gz: 959f72ea4361803e7439dd7241b8f666f23bc39b0334c9d4f2b9cebf531b627b3bea2046b05773f4104127056535954c661c22b9638f27ca41b1b5c7573cfeaa
data/.travis.yml ADDED
@@ -0,0 +1,3 @@
1
+ language: ruby
2
+ rvm:
3
+ - 2.2.2
@@ -1,13 +1,24 @@
1
1
  module Streamingly
2
2
 
3
3
  class SerDeIterable
4
- def initialize(iterable)
4
+ def initialize(iterable, error_handler = nil)
5
5
  @iterable = iterable
6
+ @error_handler = error_handler
7
+ @error_callback_defined = @error_handler &&
8
+ @error_handler.respond_to?(:on_error)
6
9
  end
7
10
 
8
11
  def each
9
12
  @iterable.each do |line|
10
- yield Streamingly::SerDe.from_tabbed_csv(line)
13
+ begin
14
+ yield Streamingly::SerDe.from_tabbed_csv(line)
15
+ rescue => error
16
+ if @error_callback_defined
17
+ @error_handler.send(:on_error, error, line: line)
18
+ else
19
+ raise error
20
+ end
21
+ end
11
22
  end
12
23
  end
13
24
  end
@@ -1,3 +1,3 @@
1
1
  module Streamingly
2
- VERSION = '0.2.4'
2
+ VERSION = '0.2.6'
3
3
  end
data/spec/spec_helper.rb CHANGED
@@ -7,7 +7,6 @@ require 'streamingly'
7
7
  #
8
8
  # See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration
9
9
  RSpec.configure do |config|
10
- config.treat_symbols_as_metadata_keys_with_true_values = true
11
10
  config.run_all_when_everything_filtered = true
12
11
  config.filter_run :focus
13
12
 
@@ -58,12 +58,13 @@ describe Streamingly::Reducer do
58
58
  let(:accumulator) { double(:accumulator, :flush => []) }
59
59
 
60
60
  before do
61
- accumulator_class.stub(:new).with(key) { accumulator }
61
+ allow(accumulator_class).to \
62
+ receive(:new).with(key).and_return(accumulator)
62
63
  end
63
64
 
64
65
  it "combines them into the same accumulator" do
65
- accumulator.should_receive(:apply_value).with(value1)
66
- accumulator.should_receive(:apply_value).with(value2)
66
+ expect(accumulator).to receive(:apply_value).with(value1)
67
+ expect(accumulator).to receive(:apply_value).with(value2)
67
68
 
68
69
  subject.reduce_over(records)
69
70
  end
@@ -86,13 +87,15 @@ describe Streamingly::Reducer do
86
87
  let(:accumulator2) { double(:accumulator, :flush => []) }
87
88
 
88
89
  before do
89
- accumulator_class.stub(:new).with(key1) { accumulator1 }
90
- accumulator_class.stub(:new).with(key2) { accumulator2 }
90
+ allow(accumulator_class).to \
91
+ receive(:new).with(key1).and_return(accumulator1)
92
+ allow(accumulator_class).to \
93
+ receive(:new).with(key2).and_return(accumulator2)
91
94
  end
92
95
 
93
96
  it "sends them to different accumulators" do
94
- accumulator1.should_receive(:apply_value).with(value1)
95
- accumulator2.should_receive(:apply_value).with(value2)
97
+ expect(accumulator1).to receive(:apply_value).with(value1)
98
+ expect(accumulator2).to receive(:apply_value).with(value2)
96
99
 
97
100
  subject.reduce_over(records)
98
101
  end
@@ -111,11 +114,12 @@ describe Streamingly::Reducer do
111
114
  let(:accumulator) { double(:accumulator, :flush => []) }
112
115
 
113
116
  before do
114
- accumulator_class.stub(:new).with(key) { accumulator }
117
+ allow(accumulator_class).to \
118
+ receive(:new).with(key).and_return(accumulator)
115
119
  end
116
120
 
117
121
  it "treats only the first tab as the key/value delimiter and leaves the value untouched" do
118
- accumulator.should_receive(:apply_value).with(value)
122
+ expect(accumulator).to receive(:apply_value).with(value)
119
123
 
120
124
  subject.reduce_over(records)
121
125
  end
@@ -136,7 +140,8 @@ describe Streamingly::Reducer do
136
140
 
137
141
  context "with error callback specified" do
138
142
  before do
139
- accumulator_class.stub(:new).with(key) { accumulator }
143
+ allow(accumulator_class).to \
144
+ receive(:new).with(key).and_return(accumulator)
140
145
  end
141
146
 
142
147
  it "keeps processing after error applying value" do
@@ -163,7 +168,8 @@ describe Streamingly::Reducer do
163
168
  subject { described_class.new(accumulator_class) }
164
169
 
165
170
  before do
166
- accumulator_class.stub(:new).with(key) { accumulator }
171
+ allow(accumulator_class).to \
172
+ receive(:new).with(key).and_return(accumulator)
167
173
  end
168
174
 
169
175
  it "stops processing after error applying value" do
@@ -193,8 +199,10 @@ describe Streamingly::Reducer do
193
199
 
194
200
  context "with error callback specified" do
195
201
  before do
196
- accumulator_class.stub(:new).with(key1) { accumulator1 }
197
- accumulator_class.stub(:new).with(key2) { accumulator2 }
202
+ allow(accumulator_class).to \
203
+ receive(:new).with(key1).and_return(accumulator1)
204
+ allow(accumulator_class).to \
205
+ receive(:new).with(key2).and_return(accumulator2)
198
206
  end
199
207
 
200
208
  it "keeps processing after error applying value" do
@@ -224,8 +232,10 @@ describe Streamingly::Reducer do
224
232
  subject { described_class.new(accumulator_class) }
225
233
 
226
234
  before do
227
- accumulator_class.stub(:new).with(key1) { accumulator1 }
228
- accumulator_class.stub(:new).with(key2) { accumulator2 }
235
+ allow(accumulator_class).to \
236
+ receive(:new).with(key1).and_return(accumulator1)
237
+ allow(accumulator_class).to \
238
+ receive(:new).with(key2).and_return(accumulator2)
229
239
  end
230
240
 
231
241
  it "stops processing after error applying value" do
@@ -256,11 +266,12 @@ describe Streamingly::Reducer do
256
266
  let(:accumulator) { double(:accumulator, :flush => []) }
257
267
 
258
268
  before do
259
- accumulator_class.stub(:new).with(key, accumulator_options) { accumulator }
269
+ allow(accumulator_class).to \
270
+ receive(:new).with(key, accumulator_options).and_return(accumulator)
260
271
  end
261
272
 
262
273
  it "uses the accumulator_options to initialize each accumulator" do
263
- accumulator.should_receive(:apply_value).with(value)
274
+ expect(accumulator).to receive(:apply_value).with(value)
264
275
 
265
276
  subject.reduce_over(records)
266
277
  end
@@ -0,0 +1,28 @@
1
+ require 'spec_helper'
2
+
3
+ describe Streamingly::SerDeIterable do
4
+ let(:iterable) { [1] }
5
+ let(:error) { StandardError.new('error') }
6
+
7
+ before do
8
+ allow(Streamingly::SerDe).to receive(:from_tabbed_csv).and_raise(error)
9
+ end
10
+
11
+ describe 'no error handler given' do
12
+ subject { described_class.new(iterable) }
13
+
14
+ it 'raises error when calling each' do
15
+ expect { subject.each }.to raise_error(StandardError)
16
+ end
17
+ end
18
+
19
+ describe 'given custom error handler' do
20
+ let(:error_handler) { double(:error_handler, respond_to?: true) }
21
+ subject { described_class.new(iterable, error_handler) }
22
+
23
+ it 'calls on_error method of provided handler' do
24
+ expect(error_handler).to receive(:on_error).with(error, line: 1)
25
+ expect { subject.each }.to_not raise_error
26
+ end
27
+ end
28
+ end
data/streamingly.gemspec CHANGED
@@ -18,8 +18,8 @@ Gem::Specification.new do |spec|
18
18
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
19
  spec.require_paths = ["lib"]
20
20
 
21
- spec.add_development_dependency "bundler", "~> 1.3"
21
+ spec.add_development_dependency "bundler", "~> 1.10"
22
22
  spec.add_development_dependency "pry"
23
23
  spec.add_development_dependency "rake"
24
- spec.add_development_dependency "rspec", "~> 2.11"
24
+ spec.add_development_dependency "rspec", "~> 3.4.0"
25
25
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: streamingly
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.4
4
+ version: 0.2.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matt Gillooly
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-08-19 00:00:00.000000000 Z
11
+ date: 2016-01-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '1.3'
19
+ version: '1.10'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '1.3'
26
+ version: '1.10'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: pry
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -58,14 +58,14 @@ dependencies:
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: '2.11'
61
+ version: 3.4.0
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: '2.11'
68
+ version: 3.4.0
69
69
  description: Helpful classes for writing streaming Hadoop jobs in Ruby
70
70
  email:
71
71
  - matt@swipely.com
@@ -75,6 +75,7 @@ extra_rdoc_files: []
75
75
  files:
76
76
  - ".gitignore"
77
77
  - ".rspec"
78
+ - ".travis.yml"
78
79
  - Gemfile
79
80
  - LICENSE.txt
80
81
  - README.md
@@ -87,6 +88,7 @@ files:
87
88
  - lib/streamingly/version.rb
88
89
  - spec/spec_helper.rb
89
90
  - spec/streamingly/reducer_spec.rb
91
+ - spec/streamingly/serde_iterable_spec.rb
90
92
  - spec/streamingly/serde_spec.rb
91
93
  - streamingly.gemspec
92
94
  homepage: http://github.com/swipely/streamingly
@@ -116,4 +118,5 @@ summary: Helpful classes for writing streaming Hadoop jobs in Ruby
116
118
  test_files:
117
119
  - spec/spec_helper.rb
118
120
  - spec/streamingly/reducer_spec.rb
121
+ - spec/streamingly/serde_iterable_spec.rb
119
122
  - spec/streamingly/serde_spec.rb