stream_lines 0.3.0 → 0.4.1

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
  SHA256:
3
- metadata.gz: 5f86f4c30e240b9076fa0ede333d89a0974e48b57ca3c75c145031314b524973
4
- data.tar.gz: 7ee39a6d12b3e3e54eac67f6ea1d0108ac8ecc57ad78676187fe4c3dfcfed293
3
+ metadata.gz: d12669d8a8c0f786d731b6fb98374e4105b483379e6ad9b0cb346a62289c5481
4
+ data.tar.gz: 67607b92517c8b6151e576258314ed4896344893b1a5160602e018aa0aae7d28
5
5
  SHA512:
6
- metadata.gz: 2edb6bdd8ebccbf8d99c9769303c132ae2016c628dec9fc7b499ea3cf95ef579f9781ac7c205cbf526a1a10062af5d14c56a4927058a9580b0b6c0636b186978
7
- data.tar.gz: b56a5173a42cc761337d4d1f30116bc6e5d08f1e07ff32eb8c4edeef58a537d42949a21d696be21f3913f51413242e03a0bbe5f7e4176f8b8f63b3204722e1ee
6
+ metadata.gz: 178c5fc570b8dba9330efcd6493b2437fdbd6ed277e3ec653d7c6e436fcb959fea89110781059e5a6acf3e821fa5cb098afcee35664dbac028469baf3542f5cf
7
+ data.tar.gz: a9e08b3b01ad37fd2daf0e1e10ed729fb8ceabe0e151c2e147c0d131216bf2f1cca2562240890db816a869fc2c7f8c52618796769b20cb8c92e920b16cf11ff0
@@ -0,0 +1,12 @@
1
+ version: 2
2
+ updates:
3
+ - package-ecosystem: bundler
4
+ directory: "/"
5
+ schedule:
6
+ interval: weekly
7
+ time: "10:00"
8
+ open-pull-requests-limit: 10
9
+ ignore:
10
+ - dependency-name: rubocop
11
+ versions:
12
+ - 1.12.0
@@ -0,0 +1,32 @@
1
+ name: Tests (Ruby)
2
+
3
+ on:
4
+ push:
5
+ branches:
6
+ - main
7
+ pull_request:
8
+ branches:
9
+ - '*'
10
+
11
+ jobs:
12
+ test:
13
+ runs-on: ubuntu-latest
14
+ strategy:
15
+ matrix:
16
+ ruby_version:
17
+ - 2.6
18
+ - 2.7
19
+ - 3.0
20
+ - 3.1
21
+ steps:
22
+ - uses: actions/checkout@v2
23
+ - name: Set up Ruby
24
+ uses: ruby/setup-ruby@v1
25
+ with:
26
+ ruby-version: ${{ matrix.ruby_version }}
27
+ - name: Ruby version
28
+ run: ruby -v
29
+ - name: Install dependencies
30
+ run: bundle install
31
+ - name: Run tests
32
+ run: bundle exec rake
@@ -0,0 +1,30 @@
1
+ # This workflow uses actions that are not certified by GitHub.
2
+ # They are provided by a third-party and are governed by
3
+ # separate terms of service, privacy policy, and support
4
+ # documentation.
5
+ # This workflow will download a prebuilt Ruby version, install dependencies and run tests with Rake
6
+ # For more information see: https://github.com/marketplace/actions/setup-ruby-jruby-and-truffleruby
7
+
8
+ name: Style Check
9
+
10
+ on:
11
+ push:
12
+ branches:
13
+ - main
14
+ pull_request:
15
+ branches:
16
+ - '*'
17
+
18
+ jobs:
19
+ rubocop:
20
+ runs-on: ubuntu-latest
21
+ steps:
22
+ - uses: actions/checkout@v2
23
+ - name: Set up Ruby
24
+ uses: ruby/setup-ruby@v1
25
+ with:
26
+ ruby-version: 3.0
27
+ - name: Install dependencies
28
+ run: bundle install
29
+ - name: Run Rubocop
30
+ run: bundle exec rubocop -D
data/.rubocop.yml CHANGED
@@ -1,4 +1,6 @@
1
1
  AllCops:
2
+ NewCops: 'enable'
3
+ TargetRubyVersion: 2.5
2
4
  Exclude:
3
5
  - '*.gemspec'
4
6
  - 'vendor/bundle/**/*'
data/.ruby-version CHANGED
@@ -1 +1 @@
1
- ruby-2.7.0
1
+ 3.1.2
data/Gemfile.lock CHANGED
@@ -1,78 +1,85 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- stream_lines (0.3.0)
4
+ stream_lines (0.4.1)
5
5
  httparty (~> 0.14)
6
6
 
7
7
  GEM
8
8
  remote: https://rubygems.org/
9
9
  specs:
10
- addressable (2.7.0)
10
+ addressable (2.8.0)
11
11
  public_suffix (>= 2.0.2, < 5.0)
12
- ast (2.4.0)
13
- awesome_print (1.8.0)
14
- backports (3.15.0)
15
- bundler-audit (0.6.1)
12
+ ast (2.4.2)
13
+ awesome_print (1.9.2)
14
+ backports (3.17.2)
15
+ bundler-audit (0.9.0.1)
16
16
  bundler (>= 1.2.0, < 3)
17
- thor (~> 0.18)
17
+ thor (~> 1.0)
18
18
  bundler-gem_version_tasks (0.2.1)
19
- byebug (11.1.1)
20
- crack (0.4.3)
21
- safe_yaml (~> 1.0.0)
22
- diff-lcs (1.3)
23
- docile (1.3.2)
24
- ffi (1.11.3)
25
- get_process_mem (0.2.5)
19
+ byebug (11.1.3)
20
+ charlock_holmes (0.7.7)
21
+ crack (0.4.5)
22
+ rexml
23
+ diff-lcs (1.5.0)
24
+ docile (1.3.4)
25
+ ffi (1.13.1)
26
+ get_process_mem (0.2.7)
26
27
  ffi (~> 1.0)
27
- hashdiff (1.0.0)
28
- httparty (0.17.3)
28
+ hashdiff (1.0.1)
29
+ httparty (0.20.0)
29
30
  mime-types (~> 3.0)
30
31
  multi_xml (>= 0.5.2)
31
- jaro_winkler (1.5.4)
32
- memory_profiler (0.9.14)
32
+ memory_profiler (1.0.0)
33
33
  mime-types (3.3.1)
34
34
  mime-types-data (~> 3.2015)
35
- mime-types-data (3.2019.1009)
35
+ mime-types-data (3.2021.0901)
36
36
  multi_json (1.14.1)
37
37
  multi_xml (0.6.0)
38
38
  mustermann (1.1.1)
39
39
  ruby2_keywords (~> 0.0.1)
40
- parallel (1.19.1)
41
- parser (2.7.0.2)
42
- ast (~> 2.4.0)
43
- public_suffix (4.0.3)
44
- rack (2.0.8)
40
+ parallel (1.22.1)
41
+ parser (3.1.1.0)
42
+ ast (~> 2.4.1)
43
+ public_suffix (4.0.6)
44
+ rack (2.2.3)
45
45
  rack-protection (2.0.8.1)
46
46
  rack
47
- rainbow (3.0.0)
48
- rake (13.0.1)
49
- rspec (3.9.0)
50
- rspec-core (~> 3.9.0)
51
- rspec-expectations (~> 3.9.0)
52
- rspec-mocks (~> 3.9.0)
53
- rspec-core (3.9.1)
54
- rspec-support (~> 3.9.1)
55
- rspec-expectations (3.9.0)
47
+ rainbow (3.1.1)
48
+ rake (13.0.6)
49
+ regexp_parser (2.3.0)
50
+ rexml (3.2.5)
51
+ rspec (3.11.0)
52
+ rspec-core (~> 3.11.0)
53
+ rspec-expectations (~> 3.11.0)
54
+ rspec-mocks (~> 3.11.0)
55
+ rspec-core (3.11.0)
56
+ rspec-support (~> 3.11.0)
57
+ rspec-expectations (3.11.0)
56
58
  diff-lcs (>= 1.2.0, < 2.0)
57
- rspec-support (~> 3.9.0)
58
- rspec-mocks (3.9.1)
59
+ rspec-support (~> 3.11.0)
60
+ rspec-mocks (3.11.0)
59
61
  diff-lcs (>= 1.2.0, < 2.0)
60
- rspec-support (~> 3.9.0)
61
- rspec-support (3.9.2)
62
- rubocop (0.79.0)
63
- jaro_winkler (~> 1.5.1)
62
+ rspec-support (~> 3.11.0)
63
+ rspec-support (3.11.0)
64
+ rubocop (1.27.0)
64
65
  parallel (~> 1.10)
65
- parser (>= 2.7.0.1)
66
+ parser (>= 3.1.0.0)
66
67
  rainbow (>= 2.2.2, < 4.0)
68
+ regexp_parser (>= 1.8, < 3.0)
69
+ rexml
70
+ rubocop-ast (>= 1.16.0, < 2.0)
67
71
  ruby-progressbar (~> 1.7)
68
- unicode-display_width (>= 1.4.0, < 1.7)
69
- ruby-progressbar (1.10.1)
72
+ unicode-display_width (>= 1.4.0, < 3.0)
73
+ rubocop-ast (1.17.0)
74
+ parser (>= 3.1.1.0)
75
+ ruby-progressbar (1.11.0)
70
76
  ruby2_keywords (0.0.2)
71
- safe_yaml (1.0.5)
72
- simplecov (0.18.1)
77
+ simplecov (0.21.2)
73
78
  docile (~> 1.1)
74
- simplecov-html (~> 0.11.0)
75
- simplecov-html (0.11.0)
79
+ simplecov-html (~> 0.11)
80
+ simplecov_json_formatter (~> 0.1)
81
+ simplecov-html (0.12.3)
82
+ simplecov_json_formatter (0.1.2)
76
83
  sinatra (2.0.8.1)
77
84
  mustermann (~> 1.0)
78
85
  rack (~> 2.0)
@@ -85,13 +92,14 @@ GEM
85
92
  rack-protection (= 2.0.8.1)
86
93
  sinatra (= 2.0.8.1)
87
94
  tilt (~> 2.0)
88
- thor (0.20.3)
95
+ thor (1.1.0)
89
96
  tilt (2.0.10)
90
- unicode-display_width (1.6.0)
91
- webmock (3.8.1)
92
- addressable (>= 2.3.6)
97
+ unicode-display_width (2.1.0)
98
+ webmock (3.14.0)
99
+ addressable (>= 2.8.0)
93
100
  crack (>= 0.3.2)
94
101
  hashdiff (>= 0.4.0, < 2.0.0)
102
+ webrick (1.7.0)
95
103
 
96
104
  PLATFORMS
97
105
  ruby
@@ -102,16 +110,18 @@ DEPENDENCIES
102
110
  bundler-audit
103
111
  bundler-gem_version_tasks
104
112
  byebug
113
+ charlock_holmes
105
114
  get_process_mem
106
115
  memory_profiler
107
116
  rake (~> 13.0)
108
117
  rspec (~> 3.0)
109
- rubocop (~> 0.79.0)
118
+ rubocop (~> 1.27.0)
110
119
  simplecov (~> 0.17)
111
120
  sinatra (~> 2.0)
112
121
  sinatra-contrib (~> 2.0)
113
122
  stream_lines!
114
123
  webmock (~> 3.0)
124
+ webrick (~> 1.7)
115
125
 
116
126
  BUNDLED WITH
117
- 2.0.2
127
+ 2.3.11
data/README.md CHANGED
@@ -1,6 +1,7 @@
1
1
  # StreamLines
2
2
 
3
- [![Build Status](https://travis-ci.com/jdlubrano/stream_lines.svg?branch=master)](https://travis-ci.com/jdlubrano/stream_lines)
3
+ [![Gem Version](https://badge.fury.io/rb/stream_lines.svg)](https://badge.fury.io/rb/stream_lines)
4
+ [![Tests (Ruby)](https://github.com/jdlubrano/stream_lines/actions/workflows/ruby-tests.yml/badge.svg)](https://github.com/jdlubrano/stream_lines/actions/workflows/ruby-tests.yml)
4
5
 
5
6
  An API for streaming files from remote locations one line at a time.
6
7
 
@@ -54,6 +55,37 @@ stream.each_slice(100) do |lines|
54
55
  end
55
56
  ```
56
57
 
58
+ ##### Caveats
59
+
60
+ This library strives to provide streamed data via an `Enumerable` interface.
61
+ In order to be memory-efficient, however, each time the stream is iterated over,
62
+ a new GET request is made to fetch the data from its remote URL. For example,
63
+
64
+ ```ruby
65
+ url = 'https://my.remote.file/file.txt'
66
+ stream = StreamLines::Reading::Stream.new(url)
67
+ do_something_with_first_row(stream.first) # GET request made
68
+
69
+ stream.each do |line| # same GET request made
70
+ # Do something with the line of data (the line will be a String)
71
+ end
72
+ ```
73
+
74
+ makes two GET requests. The call to `first` makes a GET request to fetch
75
+ the first row of data. The subsequent call to `each` makes the same GET
76
+ request. To avoid unnecessary requests, I recommend a slightly different
77
+ approach, which may not be intuitive but does make only one network request:
78
+
79
+ ```
80
+ url = 'https://my.remote.file/file.txt'
81
+ stream = StreamLines::Reading::Stream.new(url)
82
+
83
+ stream.each_with_index do |line, i|
84
+ do_something_with_first_row(line) if i.zero?
85
+ # Do something with the line of data (the line will be a String)
86
+ end
87
+ ```
88
+
57
89
  ##### CSVs
58
90
 
59
91
  This gem provides first-class support for streaming CSVs from a remote URL.
@@ -118,10 +150,10 @@ To install this gem onto your local machine, run `bundle exec rake install`.
118
150
 
119
151
  ## Releasing
120
152
 
121
- After merging in the new functionality to the master branch:
153
+ After merging in the new functionality to the main branch:
122
154
 
123
155
  ```
124
- git checkout master
156
+ git checkout main
125
157
  git pull --prune
126
158
  bundle exec rake version:bump:<major, minor, or patch>
127
159
  bundle exec rubocop -a
@@ -134,7 +166,7 @@ bundle exec rake release
134
166
  Bug reports and pull requests are welcome on GitHub at
135
167
  https://github.com/jdlubrano/stream_lines. This project is intended to be a
136
168
  safe, welcoming space for collaboration, and contributors are expected to
137
- adhere to the [code of conduct](https://github.com/jdlubrano/stream_lines/blob/master/CODE_OF_CONDUCT.md).
169
+ adhere to the [code of conduct](https://github.com/jdlubrano/stream_lines/blob/main/CODE_OF_CONDUCT.md).
138
170
 
139
171
  ## License
140
172
 
data/bin/console CHANGED
@@ -3,7 +3,9 @@
3
3
  # frozen_string_literal: true
4
4
 
5
5
  require 'bundler/setup'
6
+ require 'byebug'
6
7
  require 'stream_lines'
8
+ require 'charlock_holmes/string'
7
9
 
8
10
  # You can add fixtures and/or initialization code here to make experimenting
9
11
  # with your gem easier. You can also use a different console, if you like.
@@ -23,7 +23,10 @@ module StreamLines
23
23
  def initialize(url, **csv_options)
24
24
  @url = url
25
25
  @csv_options = accepted_csv_options(csv_options)
26
- @stream = Stream.new(url)
26
+ @first_row_headers = @csv_options[:headers] == true
27
+
28
+ encoding = @csv_options[:encoding] || Encoding.default_external
29
+ @stream = Stream.new(url, encoding: encoding)
27
30
  end
28
31
 
29
32
  def each(&block)
@@ -39,7 +42,7 @@ module StreamLines
39
42
  attr_reader :url
40
43
 
41
44
  def first_row_headers?
42
- @csv_options[:headers] == true
45
+ @first_row_headers
43
46
  end
44
47
 
45
48
  def assign_first_row_headers(first_line)
@@ -8,10 +8,10 @@ module StreamLines
8
8
  class JSONLines
9
9
  include Enumerable
10
10
 
11
- def initialize(url, **json_options)
11
+ def initialize(url, encoding: Encoding.default_external, **json_options)
12
12
  @url = url
13
13
  @json_options = json_options
14
- @stream = Stream.new(url)
14
+ @stream = Stream.new(url, encoding: encoding)
15
15
  end
16
16
 
17
17
  def each(&block)
@@ -12,9 +12,10 @@ module StreamLines
12
12
 
13
13
  raise_on 400..599
14
14
 
15
- def initialize(url)
15
+ def initialize(url, encoding: Encoding.default_external)
16
16
  @url = url
17
- @buffer = StringIO.new
17
+ @encoding = encoding
18
+ @buffer = String.new(encoding: @encoding)
18
19
  end
19
20
 
20
21
  def each(&block)
@@ -33,22 +34,36 @@ module StreamLines
33
34
  lines.each { |line| block.call(line) }
34
35
  end
35
36
 
36
- @buffer.rewind
37
- block.call(@buffer.read) if @buffer.size.positive?
37
+ block.call(@buffer) if @buffer.size.positive?
38
38
  end
39
39
 
40
40
  def extract_lines(chunk)
41
- lines = chunk.split($INPUT_RECORD_SEPARATOR, -1)
41
+ encoded_chunk = @buffer + chunk.to_s.dup.force_encoding(@encoding)
42
+ lines = split_lines(encoded_chunk)
43
+ @buffer = String.new(encoding: @encoding)
44
+ @buffer << lines.pop.to_s
42
45
 
43
- if lines.length > 1
44
- @buffer.rewind
45
- lines.first.prepend(@buffer.read)
46
- @buffer.truncate(0)
47
- end
48
-
49
- @buffer << lines.pop
50
46
  lines
51
47
  end
48
+
49
+ def split_lines(encoded_chunk)
50
+ encoded_chunk.split($INPUT_RECORD_SEPARATOR, -1)
51
+ rescue ArgumentError => e
52
+ raise e unless /invalid byte sequence/.match?(e.message)
53
+
54
+ # NOTE: (jdlubrano)
55
+ # The last byte in the chunk is most likely a part of a multibyte
56
+ # character that, on its own, is an invalid byte sequence. So, we
57
+ # want to split the lines containing all valid bytes and make the
58
+ # trailing bytes the last line. The last line eventually gets added
59
+ # to the buffer, prepended to the next chunk, and, hopefully, restores
60
+ # a valid byte sequence.
61
+ last_newline_index = encoded_chunk.rindex($INPUT_RECORD_SEPARATOR)
62
+ return [encoded_chunk] if last_newline_index.nil?
63
+
64
+ valid_lines = encoded_chunk[0...last_newline_index].split($INPUT_RECORD_SEPARATOR, -1)
65
+ valid_lines + [encoded_chunk[(last_newline_index + 1)..-1]].compact
66
+ end
52
67
  end
53
68
  end
54
69
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module StreamLines
4
- VERSION = '0.3.0'
4
+ VERSION = '0.4.1'
5
5
  end
data/stream_lines.gemspec CHANGED
@@ -33,13 +33,15 @@ Gem::Specification.new do |spec|
33
33
  spec.add_development_dependency 'bundler-audit'
34
34
  spec.add_development_dependency 'bundler-gem_version_tasks'
35
35
  spec.add_development_dependency 'byebug'
36
+ spec.add_development_dependency 'charlock_holmes'
36
37
  spec.add_development_dependency 'get_process_mem'
37
38
  spec.add_development_dependency 'memory_profiler'
38
39
  spec.add_development_dependency 'rake', '~> 13.0'
39
40
  spec.add_development_dependency 'rspec', '~> 3.0'
40
- spec.add_development_dependency 'rubocop', '~> 0.79.0'
41
+ spec.add_development_dependency 'rubocop', '~> 1.27.0'
41
42
  spec.add_development_dependency 'simplecov', '~> 0.17'
42
43
  spec.add_development_dependency 'sinatra', '~> 2.0'
43
44
  spec.add_development_dependency 'sinatra-contrib', '~> 2.0'
45
+ spec.add_development_dependency 'webrick', '~> 1.7'
44
46
  spec.add_development_dependency 'webmock', '~> 3.0'
45
47
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: stream_lines
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.4.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Joel Lubrano
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-02-14 00:00:00.000000000 Z
11
+ date: 2022-04-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: httparty
@@ -94,6 +94,20 @@ dependencies:
94
94
  - - ">="
95
95
  - !ruby/object:Gem::Version
96
96
  version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: charlock_holmes
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
97
111
  - !ruby/object:Gem::Dependency
98
112
  name: get_process_mem
99
113
  requirement: !ruby/object:Gem::Requirement
@@ -156,14 +170,14 @@ dependencies:
156
170
  requirements:
157
171
  - - "~>"
158
172
  - !ruby/object:Gem::Version
159
- version: 0.79.0
173
+ version: 1.27.0
160
174
  type: :development
161
175
  prerelease: false
162
176
  version_requirements: !ruby/object:Gem::Requirement
163
177
  requirements:
164
178
  - - "~>"
165
179
  - !ruby/object:Gem::Version
166
- version: 0.79.0
180
+ version: 1.27.0
167
181
  - !ruby/object:Gem::Dependency
168
182
  name: simplecov
169
183
  requirement: !ruby/object:Gem::Requirement
@@ -206,6 +220,20 @@ dependencies:
206
220
  - - "~>"
207
221
  - !ruby/object:Gem::Version
208
222
  version: '2.0'
223
+ - !ruby/object:Gem::Dependency
224
+ name: webrick
225
+ requirement: !ruby/object:Gem::Requirement
226
+ requirements:
227
+ - - "~>"
228
+ - !ruby/object:Gem::Version
229
+ version: '1.7'
230
+ type: :development
231
+ prerelease: false
232
+ version_requirements: !ruby/object:Gem::Requirement
233
+ requirements:
234
+ - - "~>"
235
+ - !ruby/object:Gem::Version
236
+ version: '1.7'
209
237
  - !ruby/object:Gem::Dependency
210
238
  name: webmock
211
239
  requirement: !ruby/object:Gem::Requirement
@@ -220,19 +248,21 @@ dependencies:
220
248
  - - "~>"
221
249
  - !ruby/object:Gem::Version
222
250
  version: '3.0'
223
- description:
251
+ description:
224
252
  email:
225
253
  - joel.lubrano@gmail.com
226
254
  executables: []
227
255
  extensions: []
228
256
  extra_rdoc_files: []
229
257
  files:
258
+ - ".github/dependabot.yml"
259
+ - ".github/workflows/ruby-tests.yml"
260
+ - ".github/workflows/style-check.yml"
230
261
  - ".gitignore"
231
262
  - ".rspec"
232
263
  - ".rubocop.yml"
233
264
  - ".ruby-gemset"
234
265
  - ".ruby-version"
235
- - ".travis.yml"
236
266
  - CODE_OF_CONDUCT.md
237
267
  - Gemfile
238
268
  - Gemfile.lock
@@ -256,7 +286,7 @@ metadata:
256
286
  homepage_uri: https://github.com/jdlubrano/stream_lines
257
287
  source_code_uri: https://github.com/jdlubrano/stream_lines
258
288
  changelog_uri: https://github.com/jdlubrano/stream_lines/releases
259
- post_install_message:
289
+ post_install_message:
260
290
  rdoc_options: []
261
291
  require_paths:
262
292
  - lib
@@ -271,8 +301,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
271
301
  - !ruby/object:Gem::Version
272
302
  version: '0'
273
303
  requirements: []
274
- rubygems_version: 3.1.2
275
- signing_key:
304
+ rubygems_version: 3.3.7
305
+ signing_key:
276
306
  specification_version: 4
277
307
  summary: A utility to stream lines of a file over HTTP
278
308
  test_files: []
data/.travis.yml DELETED
@@ -1,15 +0,0 @@
1
- ---
2
- language: ruby
3
- cache: bundler
4
- rvm:
5
- - 2.7.0
6
- - 2.6.0
7
- - 2.5.0
8
- before_install: gem install bundler -v 2.0.2
9
- script:
10
- - bundle exec bundle-audit check --update
11
- - bundle exec rubocop
12
- - bundle exec rspec
13
- branches:
14
- only:
15
- - master