stream_lines 0.3.0 → 0.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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