zipline 2.0.0 → 2.1.0
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 +4 -4
- data/.github/workflows/ci.yml +1 -1
- data/.standard.yml +4 -0
- data/Gemfile +1 -1
- data/Rakefile +4 -8
- data/lib/zipline/version.rb +1 -1
- data/lib/zipline/zip_handler.rb +9 -5
- data/lib/zipline.rb +5 -5
- data/spec/lib/zipline/zip_handler_spec.rb +53 -43
- data/spec/lib/zipline/zipline_spec.rb +16 -12
- data/spec/spec_helper.rb +14 -14
- data/zipline.gemspec +22 -23
- metadata +21 -13
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 87ea082c8b6e5b78101eed8383d5851510765a948f5fa836607b14170db32c37
|
4
|
+
data.tar.gz: b7508ab7190eba8dd233d923bc41e3adab5d968f3eee743445a2d7b2f427c26e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 643f217f94d513a1f517bd421117f7ec51b8df45ac6afe23e1ddbb0f4964dedd46f2b895fe0551ce0e3142f911dc5f07c92254a877cd4960506ade02e955a322
|
7
|
+
data.tar.gz: b6a8960a8a8378b46a13b212f4e1713f6b29f08c60c65c48135b765a48e93892063faf2ba983f3a81bb81df9e7d92f875d0341b571d67afb65ed5c8977ec4023
|
data/.github/workflows/ci.yml
CHANGED
data/.standard.yml
ADDED
data/Gemfile
CHANGED
data/Rakefile
CHANGED
@@ -1,12 +1,8 @@
|
|
1
1
|
#!/usr/bin/env rake
|
2
2
|
require "bundler/gem_tasks"
|
3
|
+
require "standard/rake"
|
4
|
+
require "rspec/core/rake_task"
|
3
5
|
|
4
|
-
|
5
|
-
require 'rspec/core/rake_task'
|
6
|
+
RSpec::Core::RakeTask.new(:spec)
|
6
7
|
|
7
|
-
|
8
|
-
|
9
|
-
task default: :spec
|
10
|
-
rescue LoadError
|
11
|
-
# no rspec available
|
12
|
-
end
|
8
|
+
task default: [:spec, :standard]
|
data/lib/zipline/version.rb
CHANGED
data/lib/zipline/zip_handler.rb
CHANGED
@@ -14,7 +14,7 @@ module Zipline
|
|
14
14
|
# Rack bodies, it can be helpful to print the error to the Rails log at least
|
15
15
|
error_message = "zipline: an exception (#{e.inspect}) was raised when serving the ZIP body."
|
16
16
|
error_message += " The error occurred when handling file #{name.inspect}"
|
17
|
-
@logger
|
17
|
+
@logger&.error(error_message)
|
18
18
|
raise
|
19
19
|
end
|
20
20
|
|
@@ -51,7 +51,7 @@ module Zipline
|
|
51
51
|
elsif is_url?(file)
|
52
52
|
{url: file}
|
53
53
|
else
|
54
|
-
raise(ArgumentError,
|
54
|
+
raise(ArgumentError, "Bad File/Stream")
|
55
55
|
end
|
56
56
|
end
|
57
57
|
|
@@ -71,7 +71,7 @@ module Zipline
|
|
71
71
|
elsif file[:blob]
|
72
72
|
file[:blob].download { |chunk| writer_for_file << chunk }
|
73
73
|
else
|
74
|
-
raise(ArgumentError,
|
74
|
+
raise(ArgumentError, "Bad File/Stream")
|
75
75
|
end
|
76
76
|
end
|
77
77
|
end
|
@@ -91,8 +91,12 @@ module Zipline
|
|
91
91
|
end
|
92
92
|
|
93
93
|
def is_url?(url)
|
94
|
-
url =
|
95
|
-
|
94
|
+
url = begin
|
95
|
+
URI.parse(url)
|
96
|
+
rescue
|
97
|
+
false
|
98
|
+
end
|
99
|
+
url.is_a?(URI::HTTP) || url.is_a?(URI::HTTPS)
|
96
100
|
end
|
97
101
|
end
|
98
102
|
end
|
data/lib/zipline.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
|
-
require
|
2
|
-
require
|
3
|
-
require
|
4
|
-
require
|
1
|
+
require "content_disposition"
|
2
|
+
require "zip_kit"
|
3
|
+
require "zipline/version"
|
4
|
+
require "zipline/zip_handler"
|
5
5
|
|
6
6
|
# class MyController < ApplicationController
|
7
7
|
# include Zipline
|
@@ -17,7 +17,7 @@ module Zipline
|
|
17
17
|
super
|
18
18
|
end
|
19
19
|
|
20
|
-
def zipline(files, zipname =
|
20
|
+
def zipline(files, zipname = "zipline.zip", **kwargs_for_zip_kit_stream)
|
21
21
|
zip_kit_stream(filename: zipname, **kwargs_for_zip_kit_stream) do |zip_kit_streamer|
|
22
22
|
handler = Zipline::ZipHandler.new(zip_kit_streamer, logger)
|
23
23
|
files.each do |file, name, options = {}|
|
@@ -1,17 +1,21 @@
|
|
1
|
-
require
|
2
|
-
require
|
1
|
+
require "spec_helper"
|
2
|
+
require "tempfile"
|
3
3
|
|
4
4
|
module ActiveStorage
|
5
5
|
class Attached
|
6
6
|
class One < Attached
|
7
7
|
end
|
8
8
|
end
|
9
|
+
|
9
10
|
class Attachment; end
|
11
|
+
|
10
12
|
class Blob; end
|
13
|
+
|
11
14
|
class Filename
|
12
15
|
def initialize(name)
|
13
16
|
@name = name
|
14
17
|
end
|
18
|
+
|
15
19
|
def to_s
|
16
20
|
@name
|
17
21
|
end
|
@@ -20,38 +24,44 @@ end
|
|
20
24
|
|
21
25
|
describe Zipline::ZipHandler do
|
22
26
|
before { Fog.mock! }
|
23
|
-
let(:file_attributes)
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
27
|
+
let(:file_attributes) {
|
28
|
+
{
|
29
|
+
key: "fog_file_tests",
|
30
|
+
body: "some body",
|
31
|
+
public: true
|
32
|
+
}
|
33
|
+
}
|
34
|
+
let(:directory_attributes) {
|
35
|
+
{
|
36
|
+
key: "fog_directory"
|
37
|
+
}
|
38
|
+
}
|
39
|
+
let(:storage_attributes) {
|
40
|
+
{
|
41
|
+
aws_access_key_id: "fake_access_key_id",
|
42
|
+
aws_secret_access_key: "fake_secret_access_key",
|
43
|
+
provider: "AWS"
|
44
|
+
}
|
45
|
+
}
|
46
|
+
let(:storage) { Fog::Storage.new(storage_attributes) }
|
47
|
+
let(:directory) { storage.directories.create(directory_attributes) }
|
48
|
+
let(:file) { directory.files.create(file_attributes) }
|
49
|
+
|
50
|
+
describe ".normalize" do
|
51
|
+
let(:handler) { Zipline::ZipHandler.new(_streamer = double, _logger = nil) }
|
42
52
|
context "CarrierWave" do
|
43
53
|
context "Remote" do
|
44
|
-
let(:file){ CarrierWave::Storage::Fog::File.new(nil,nil,nil) }
|
54
|
+
let(:file) { CarrierWave::Storage::Fog::File.new(nil, nil, nil) }
|
45
55
|
it "extracts the url" do
|
46
|
-
allow(file).to receive(:url).and_return(
|
56
|
+
allow(file).to receive(:url).and_return("fakeurl")
|
47
57
|
expect(File).not_to receive(:open)
|
48
|
-
expect(handler.normalize(file)).to eq({url:
|
58
|
+
expect(handler.normalize(file)).to eq({url: "fakeurl"})
|
49
59
|
end
|
50
60
|
end
|
51
61
|
context "Local" do
|
52
|
-
let(:file){ CarrierWave::SanitizedFile.new(Tempfile.new(
|
62
|
+
let(:file) { CarrierWave::SanitizedFile.new(Tempfile.new("t")) }
|
53
63
|
it "creates a File" do
|
54
|
-
allow(file).to receive(:path).and_return(
|
64
|
+
allow(file).to receive(:path).and_return("spec/fakefile.txt")
|
55
65
|
normalized = handler.normalize(file)
|
56
66
|
expect(normalized.keys).to include(:file)
|
57
67
|
expect(normalized[:file]).to be_a File
|
@@ -61,20 +71,20 @@ describe Zipline::ZipHandler do
|
|
61
71
|
let(:uploader) { Class.new(CarrierWave::Uploader::Base).new }
|
62
72
|
|
63
73
|
context "Remote" do
|
64
|
-
let(:file){ CarrierWave::Storage::Fog::File.new(nil,nil,nil) }
|
74
|
+
let(:file) { CarrierWave::Storage::Fog::File.new(nil, nil, nil) }
|
65
75
|
it "extracts the url" do
|
66
76
|
allow(uploader).to receive(:file).and_return(file)
|
67
|
-
allow(file).to receive(:url).and_return(
|
77
|
+
allow(file).to receive(:url).and_return("fakeurl")
|
68
78
|
expect(File).not_to receive(:open)
|
69
|
-
expect(handler.normalize(uploader)).to eq({url:
|
79
|
+
expect(handler.normalize(uploader)).to eq({url: "fakeurl"})
|
70
80
|
end
|
71
81
|
end
|
72
82
|
|
73
83
|
context "Local" do
|
74
|
-
let(:file){ CarrierWave::SanitizedFile.new(Tempfile.new(
|
84
|
+
let(:file) { CarrierWave::SanitizedFile.new(Tempfile.new("t")) }
|
75
85
|
it "creates a File" do
|
76
86
|
allow(uploader).to receive(:file).and_return(file)
|
77
|
-
allow(file).to receive(:path).and_return(
|
87
|
+
allow(file).to receive(:path).and_return("spec/fakefile.txt")
|
78
88
|
normalized = handler.normalize(uploader)
|
79
89
|
expect(normalized.keys).to include(:file)
|
80
90
|
expect(normalized[:file]).to be_a File
|
@@ -84,20 +94,20 @@ describe Zipline::ZipHandler do
|
|
84
94
|
end
|
85
95
|
context "Paperclip" do
|
86
96
|
context "Local" do
|
87
|
-
let(:file){ Paperclip::Attachment.new(:name, :instance) }
|
97
|
+
let(:file) { Paperclip::Attachment.new(:name, :instance) }
|
88
98
|
it "creates a File" do
|
89
|
-
allow(file).to receive(:path).and_return(
|
99
|
+
allow(file).to receive(:path).and_return("spec/fakefile.txt")
|
90
100
|
normalized = handler.normalize(file)
|
91
101
|
expect(normalized.keys).to include(:file)
|
92
102
|
expect(normalized[:file]).to be_a File
|
93
103
|
end
|
94
104
|
end
|
95
105
|
context "Remote" do
|
96
|
-
let(:file){ Paperclip::Attachment.new(:name, :instance, storage: :s3) }
|
106
|
+
let(:file) { Paperclip::Attachment.new(:name, :instance, storage: :s3) }
|
97
107
|
it "creates a URL" do
|
98
|
-
allow(file).to receive(:expiring_url).and_return(
|
108
|
+
allow(file).to receive(:expiring_url).and_return("fakeurl")
|
99
109
|
expect(File).to_not receive(:open)
|
100
|
-
expect(handler.normalize(file)).to include(url:
|
110
|
+
expect(handler.normalize(file)).to include(url: "fakeurl")
|
101
111
|
end
|
102
112
|
end
|
103
113
|
end
|
@@ -154,7 +164,7 @@ describe Zipline::ZipHandler do
|
|
154
164
|
|
155
165
|
def create_blob
|
156
166
|
blob = ActiveStorage::Blob.new
|
157
|
-
allow(blob).to receive(:service_url).and_return(
|
167
|
+
allow(blob).to receive(:service_url).and_return("fakeurl")
|
158
168
|
filename = create_filename
|
159
169
|
allow(blob).to receive(:filename).and_return(filename)
|
160
170
|
blob
|
@@ -162,26 +172,26 @@ describe Zipline::ZipHandler do
|
|
162
172
|
|
163
173
|
def create_filename
|
164
174
|
# Rails wraps Blob#filname in this class since Rails 5.2
|
165
|
-
ActiveStorage::Filename.new(
|
175
|
+
ActiveStorage::Filename.new("test")
|
166
176
|
end
|
167
177
|
end
|
168
178
|
context "Fog" do
|
169
179
|
it "extracts url" do
|
170
|
-
allow(file).to receive(:url).and_return(
|
180
|
+
allow(file).to receive(:url).and_return("fakeurl")
|
171
181
|
expect(File).not_to receive(:open)
|
172
|
-
expect(handler.normalize(file)).to eq(url:
|
182
|
+
expect(handler.normalize(file)).to eq(url: "fakeurl")
|
173
183
|
end
|
174
184
|
end
|
175
185
|
context "IOStream" do
|
176
|
-
let(:file){ StringIO.new(
|
186
|
+
let(:file) { StringIO.new("passthrough") }
|
177
187
|
it "passes through" do
|
178
188
|
expect(handler.normalize(file)).to eq(file: file)
|
179
189
|
end
|
180
190
|
end
|
181
191
|
context "invalid" do
|
182
|
-
let(:file){ Thread.new{} }
|
192
|
+
let(:file) { Thread.new {} }
|
183
193
|
it "raises error" do
|
184
|
-
expect{handler.normalize(file)}.to raise_error(ArgumentError)
|
194
|
+
expect { handler.normalize(file) }.to raise_error(ArgumentError)
|
185
195
|
end
|
186
196
|
end
|
187
197
|
end
|
@@ -1,5 +1,5 @@
|
|
1
|
-
require
|
2
|
-
require
|
1
|
+
require "spec_helper"
|
2
|
+
require "action_controller"
|
3
3
|
|
4
4
|
describe Zipline do
|
5
5
|
before do
|
@@ -14,7 +14,7 @@ describe Zipline do
|
|
14
14
|
[StringIO.new("File content goes here"), "one.txt"],
|
15
15
|
[StringIO.new("Some other content goes here"), "two.txt"]
|
16
16
|
]
|
17
|
-
zipline(files,
|
17
|
+
zipline(files, "myfiles.zip", auto_rename_duplicate_filenames: false)
|
18
18
|
end
|
19
19
|
|
20
20
|
class FailingIO < StringIO
|
@@ -28,11 +28,11 @@ describe Zipline do
|
|
28
28
|
[StringIO.new("File content goes here"), "one.txt"],
|
29
29
|
[FailingIO.new("This will fail half-way"), "two.txt"]
|
30
30
|
]
|
31
|
-
zipline(files,
|
31
|
+
zipline(files, "myfiles.zip", auto_rename_duplicate_filenames: false)
|
32
32
|
end
|
33
33
|
end
|
34
34
|
|
35
|
-
it
|
35
|
+
it "passes keyword parameters to ZipKit::OutputEnumerator" do
|
36
36
|
fake_rack_env = {
|
37
37
|
"HTTP_VERSION" => "HTTP/1.0",
|
38
38
|
"REQUEST_METHOD" => "GET",
|
@@ -40,16 +40,20 @@ describe Zipline do
|
|
40
40
|
"PATH_INFO" => "/download",
|
41
41
|
"QUERY_STRING" => "",
|
42
42
|
"SERVER_NAME" => "host.example",
|
43
|
-
"rack.input" => StringIO.new
|
43
|
+
"rack.input" => StringIO.new
|
44
44
|
}
|
45
45
|
expect(ZipKit::OutputEnumerator).to receive(:new).with(auto_rename_duplicate_filenames: false).and_call_original
|
46
46
|
|
47
47
|
status, headers, body = FakeController.action(:download_zip).call(fake_rack_env)
|
48
48
|
|
49
|
-
expect(
|
49
|
+
expect(status).to eq(200)
|
50
|
+
expect(headers["Content-Disposition"]).to eq("attachment; filename=\"myfiles.zip\"; filename*=UTF-8''myfiles.zip")
|
51
|
+
expect {
|
52
|
+
body.each {}
|
53
|
+
}.not_to raise_error
|
50
54
|
end
|
51
55
|
|
52
|
-
it
|
56
|
+
it "sends the exception raised in the streaming body to the Rails logger" do
|
53
57
|
fake_rack_env = {
|
54
58
|
"HTTP_VERSION" => "HTTP/1.0",
|
55
59
|
"REQUEST_METHOD" => "GET",
|
@@ -57,17 +61,17 @@ describe Zipline do
|
|
57
61
|
"PATH_INFO" => "/download",
|
58
62
|
"QUERY_STRING" => "",
|
59
63
|
"SERVER_NAME" => "host.example",
|
60
|
-
"rack.input" => StringIO.new
|
64
|
+
"rack.input" => StringIO.new
|
61
65
|
}
|
62
|
-
fake_logger = double
|
66
|
+
fake_logger = double
|
63
67
|
allow(fake_logger).to receive(:warn)
|
64
68
|
expect(fake_logger).to receive(:error).with(a_string_matching(/when serving the ZIP/))
|
65
69
|
|
66
70
|
FakeController.logger = fake_logger
|
67
71
|
|
68
72
|
expect {
|
69
|
-
|
70
|
-
body.each {
|
73
|
+
_status, _headers, body = FakeController.action(:download_zip_with_error_during_streaming).call(fake_rack_env)
|
74
|
+
body.each {}
|
71
75
|
}.to raise_error(/Something wonky/)
|
72
76
|
end
|
73
77
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -1,22 +1,22 @@
|
|
1
|
-
require
|
2
|
-
require
|
3
|
-
require
|
4
|
-
require
|
1
|
+
require "rspec"
|
2
|
+
require "active_support"
|
3
|
+
require "active_support/core_ext"
|
4
|
+
require "action_dispatch"
|
5
5
|
|
6
|
-
require
|
7
|
-
require
|
8
|
-
require
|
9
|
-
require
|
6
|
+
require "zipline"
|
7
|
+
require "paperclip"
|
8
|
+
require "fog-aws"
|
9
|
+
require "carrierwave"
|
10
10
|
|
11
|
-
Dir["#{File.expand_path(
|
11
|
+
Dir["#{File.expand_path("..", __FILE__)}/support/**/*.rb"].sort.each { |f| require f }
|
12
12
|
|
13
13
|
CarrierWave.configure do |config|
|
14
|
-
config.fog_provider =
|
14
|
+
config.fog_provider = "fog/aws"
|
15
15
|
config.fog_credentials = {
|
16
|
-
provider:
|
17
|
-
aws_access_key_id:
|
18
|
-
aws_secret_access_key:
|
19
|
-
region:
|
16
|
+
provider: "AWS",
|
17
|
+
aws_access_key_id: "dummy",
|
18
|
+
aws_secret_access_key: "data",
|
19
|
+
region: "us-west-2"
|
20
20
|
}
|
21
21
|
end
|
22
22
|
|
data/zipline.gemspec
CHANGED
@@ -1,34 +1,33 @@
|
|
1
|
-
|
2
|
-
require File.expand_path('../lib/zipline/version', __FILE__)
|
1
|
+
require File.expand_path("../lib/zipline/version", __FILE__)
|
3
2
|
|
4
3
|
Gem::Specification.new do |gem|
|
5
|
-
gem.authors
|
6
|
-
gem.email
|
7
|
-
gem.description
|
8
|
-
gem.summary
|
9
|
-
gem.homepage
|
4
|
+
gem.authors = ["Ram Dobson"]
|
5
|
+
gem.email = ["ram.dobson@solsystemscompany.com"]
|
6
|
+
gem.description = "a module for streaming dynamically generated zip files"
|
7
|
+
gem.summary = "stream zip files from rails"
|
8
|
+
gem.homepage = "http://github.com/fringd/zipline"
|
10
9
|
|
11
|
-
gem.files
|
12
|
-
gem.executables
|
13
|
-
gem.
|
14
|
-
gem.name = "zipline"
|
10
|
+
gem.files = `git ls-files`.split($\) - %w[.gitignore]
|
11
|
+
gem.executables = gem.files.grep(%r{^bin/}).map { |f| File.basename(f) }
|
12
|
+
gem.name = "zipline"
|
15
13
|
gem.require_paths = ["lib"]
|
16
|
-
gem.version
|
17
|
-
gem.licenses
|
14
|
+
gem.version = Zipline::VERSION
|
15
|
+
gem.licenses = ["MIT"]
|
18
16
|
|
19
17
|
gem.required_ruby_version = ">= 2.7"
|
20
18
|
|
21
|
-
gem.add_dependency
|
22
|
-
gem.add_dependency
|
23
|
-
gem.add_dependency
|
19
|
+
gem.add_dependency "actionpack", [">= 6.0", "< 8.1"]
|
20
|
+
gem.add_dependency "content_disposition", "~> 1.0"
|
21
|
+
gem.add_dependency "zip_kit", ["~> 6", ">= 6.2.0", "< 7"]
|
24
22
|
|
25
|
-
gem.add_development_dependency
|
26
|
-
gem.add_development_dependency
|
27
|
-
gem.add_development_dependency
|
28
|
-
gem.add_development_dependency
|
29
|
-
gem.add_development_dependency
|
30
|
-
gem.add_development_dependency
|
23
|
+
gem.add_development_dependency "rspec", "~> 3"
|
24
|
+
gem.add_development_dependency "fog-aws"
|
25
|
+
gem.add_development_dependency "aws-sdk-s3"
|
26
|
+
gem.add_development_dependency "carrierwave"
|
27
|
+
gem.add_development_dependency "paperclip"
|
28
|
+
gem.add_development_dependency "rake"
|
29
|
+
gem.add_development_dependency "standard", "1.28.5" # Very specific version of standard for 2.6 with _known_ settings
|
31
30
|
|
32
31
|
# https://github.com/rspec/rspec-mocks/issues/1457
|
33
|
-
gem.add_development_dependency
|
32
|
+
gem.add_development_dependency "rspec-mocks", "~> 3.12"
|
34
33
|
end
|
metadata
CHANGED
@@ -1,14 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: zipline
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ram Dobson
|
8
|
-
autorequire:
|
9
8
|
bindir: bin
|
10
9
|
cert_chain: []
|
11
|
-
date:
|
10
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
12
11
|
dependencies:
|
13
12
|
- !ruby/object:Gem::Dependency
|
14
13
|
name: actionpack
|
@@ -19,7 +18,7 @@ dependencies:
|
|
19
18
|
version: '6.0'
|
20
19
|
- - "<"
|
21
20
|
- !ruby/object:Gem::Version
|
22
|
-
version: '8.
|
21
|
+
version: '8.1'
|
23
22
|
type: :runtime
|
24
23
|
prerelease: false
|
25
24
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -29,7 +28,7 @@ dependencies:
|
|
29
28
|
version: '6.0'
|
30
29
|
- - "<"
|
31
30
|
- !ruby/object:Gem::Version
|
32
|
-
version: '8.
|
31
|
+
version: '8.1'
|
33
32
|
- !ruby/object:Gem::Dependency
|
34
33
|
name: content_disposition
|
35
34
|
requirement: !ruby/object:Gem::Requirement
|
@@ -154,6 +153,20 @@ dependencies:
|
|
154
153
|
- - ">="
|
155
154
|
- !ruby/object:Gem::Version
|
156
155
|
version: '0'
|
156
|
+
- !ruby/object:Gem::Dependency
|
157
|
+
name: standard
|
158
|
+
requirement: !ruby/object:Gem::Requirement
|
159
|
+
requirements:
|
160
|
+
- - '='
|
161
|
+
- !ruby/object:Gem::Version
|
162
|
+
version: 1.28.5
|
163
|
+
type: :development
|
164
|
+
prerelease: false
|
165
|
+
version_requirements: !ruby/object:Gem::Requirement
|
166
|
+
requirements:
|
167
|
+
- - '='
|
168
|
+
- !ruby/object:Gem::Version
|
169
|
+
version: 1.28.5
|
157
170
|
- !ruby/object:Gem::Dependency
|
158
171
|
name: rspec-mocks
|
159
172
|
requirement: !ruby/object:Gem::Requirement
|
@@ -176,6 +189,7 @@ extensions: []
|
|
176
189
|
extra_rdoc_files: []
|
177
190
|
files:
|
178
191
|
- ".github/workflows/ci.yml"
|
192
|
+
- ".standard.yml"
|
179
193
|
- Gemfile
|
180
194
|
- LICENSE
|
181
195
|
- README.md
|
@@ -192,7 +206,6 @@ homepage: http://github.com/fringd/zipline
|
|
192
206
|
licenses:
|
193
207
|
- MIT
|
194
208
|
metadata: {}
|
195
|
-
post_install_message:
|
196
209
|
rdoc_options: []
|
197
210
|
require_paths:
|
198
211
|
- lib
|
@@ -207,12 +220,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
207
220
|
- !ruby/object:Gem::Version
|
208
221
|
version: '0'
|
209
222
|
requirements: []
|
210
|
-
rubygems_version: 3.
|
211
|
-
signing_key:
|
223
|
+
rubygems_version: 3.6.7
|
212
224
|
specification_version: 4
|
213
225
|
summary: stream zip files from rails
|
214
|
-
test_files:
|
215
|
-
- spec/fakefile.txt
|
216
|
-
- spec/lib/zipline/zip_handler_spec.rb
|
217
|
-
- spec/lib/zipline/zipline_spec.rb
|
218
|
-
- spec/spec_helper.rb
|
226
|
+
test_files: []
|