bankrupt 1.1.0 → 2.0.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/.gitignore +1 -0
- data/.rubocop.yml +17 -6
- data/.travis.yml +0 -1
- data/CHANGELOG.md +13 -0
- data/bankrupt.gemspec +4 -3
- data/lib/bankrupt/tasks.rb +36 -2
- data/lib/bankrupt/version.rb +1 -1
- metadata +45 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c128faa48d53c51a942b44223ae14a559dc3e3ce3addcbb5e54c24a26501d936
|
4
|
+
data.tar.gz: 04e4231a59a84d423b8d08be530b2b043a49cd59a4f71635f183eb75ea92ce26
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5365d3ab584d89f8826bc1a93eafd0b3792024e79f8e77e3aa00d750e52974c365d1d22336ddd6e2bb54c1e4c28754437f86ca4303ab16ad6e275cf598f8ca5c
|
7
|
+
data.tar.gz: 7845cf9952c856d2810e598b6e1946c98be58b9d581d59033102e4c6dbc2ad0514330305be609693f14d8096325fa22b7e704e84c59ade72a3591cc4c0853abd
|
data/.gitignore
CHANGED
data/.rubocop.yml
CHANGED
@@ -2,22 +2,33 @@
|
|
2
2
|
require: rubocop-rspec
|
3
3
|
|
4
4
|
AllCops:
|
5
|
-
TargetRubyVersion: 2.
|
5
|
+
TargetRubyVersion: 2.4.0
|
6
6
|
|
7
7
|
Layout/ExtraSpacing:
|
8
8
|
AllowForAlignment: false
|
9
9
|
|
10
10
|
Metrics/BlockLength:
|
11
|
-
Max:
|
11
|
+
Max: 80
|
12
12
|
Exclude:
|
13
13
|
- 'spec/**/*_spec.rb'
|
14
14
|
|
15
|
-
Metrics/LineLength:
|
16
|
-
Exclude:
|
17
|
-
- 'spec/bankrupt/util_spec.rb'
|
18
|
-
|
19
15
|
Metrics/MethodLength:
|
20
16
|
Max: 15
|
21
17
|
|
18
|
+
RSpec/DescribeClass:
|
19
|
+
Exclude:
|
20
|
+
- 'spec/bankrupt/tasks_spec.rb'
|
21
|
+
|
22
|
+
RSpec/ExampleLength:
|
23
|
+
Exclude:
|
24
|
+
- 'spec/bankrupt/tasks_spec.rb'
|
25
|
+
|
26
|
+
RSpec/MessageSpies:
|
27
|
+
Enabled: false
|
28
|
+
|
29
|
+
RSpec/MultipleExpectations:
|
30
|
+
Exclude:
|
31
|
+
- 'spec/bankrupt/tasks_spec.rb'
|
32
|
+
|
22
33
|
RSpec/NestedGroups:
|
23
34
|
Max: 6
|
data/.travis.yml
CHANGED
data/CHANGELOG.md
CHANGED
@@ -3,6 +3,19 @@
|
|
3
3
|
This file keeps track of changes between releases for the bankrupt project
|
4
4
|
which adheres to [semantic versioning](https://semver.org).
|
5
5
|
|
6
|
+
## v2.0.0 2019-06-12
|
7
|
+
|
8
|
+
This major release changes the default cache behavior of assets uploaded to s3
|
9
|
+
to make them expire in one year.
|
10
|
+
|
11
|
+
* Set cache-control header on objects uploaded to s3 (1 year).
|
12
|
+
* Add new rake task to remove old objects (anything not in the current
|
13
|
+
manifest) from s3.
|
14
|
+
* Extend test covertage to rake tasks.
|
15
|
+
* Drop support for ruby 2.3.x which might be considered breaking, but has
|
16
|
+
actually always been the case just unnoticed until the test coverage was
|
17
|
+
extended and exposed the problem, so I'm considering it a bugfix.
|
18
|
+
|
6
19
|
## v1.1.0 2019-06-05
|
7
20
|
|
8
21
|
Add support for `img` tags along with the ability to add other attributes.
|
data/bankrupt.gemspec
CHANGED
@@ -14,7 +14,7 @@ Gem::Specification.new do |spec|
|
|
14
14
|
spec.description = 'Load files from local disk or from a CDN in production.'
|
15
15
|
spec.homepage = 'https://github.com/mfinelli/bankrupt'
|
16
16
|
spec.license = 'Apache-2.0'
|
17
|
-
spec.required_ruby_version = '>= 2.
|
17
|
+
spec.required_ruby_version = '>= 2.4.0'
|
18
18
|
|
19
19
|
spec.files = `git ls-files -z`.split("\x0").reject do |f|
|
20
20
|
f.match(%r{^(test|spec|features)/})
|
@@ -22,9 +22,10 @@ Gem::Specification.new do |spec|
|
|
22
22
|
|
23
23
|
spec.require_paths = ['lib']
|
24
24
|
|
25
|
-
# spec.add_dependency 'aws-sdk-s3', '~> 1.0'
|
26
|
-
# spec.add_dependency 'mini_mime', '~> 1.0'
|
27
25
|
spec.add_dependency 'slim', '>= 3.0', '< 5.0'
|
26
|
+
spec.add_development_dependency 'aws-sdk-s3'
|
27
|
+
spec.add_development_dependency 'mini_mime'
|
28
|
+
spec.add_development_dependency 'rake'
|
28
29
|
|
29
30
|
spec.add_development_dependency 'bundler'
|
30
31
|
spec.add_development_dependency 'coveralls'
|
data/lib/bankrupt/tasks.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
# Copyright 2018 Mario Finelli
|
3
|
+
# Copyright 2018-2019 Mario Finelli
|
4
4
|
#
|
5
5
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
6
6
|
# you may not use this file except in compliance with the License.
|
@@ -42,6 +42,7 @@ namespace :bankrupt do
|
|
42
42
|
# content_md5: Base64.strict_encode64(asset[:md5]),
|
43
43
|
content_length: File.size(f),
|
44
44
|
content_type: MiniMime.lookup_by_filename(f).content_type,
|
45
|
+
cache_control: 'public, max-age=31536000',
|
45
46
|
server_side_encryption: 'AES256',
|
46
47
|
storage_class: 'STANDARD',
|
47
48
|
metadata: {
|
@@ -53,6 +54,39 @@ namespace :bankrupt do
|
|
53
54
|
end
|
54
55
|
end
|
55
56
|
|
57
|
+
desc 'Purge files that no longer exist in the manifest from s3/cloudfront'
|
58
|
+
task purge: [:manifest] do
|
59
|
+
s3 = Aws::S3::Client.new(region: 'eu-west-1')
|
60
|
+
|
61
|
+
r = s3.list_objects_v2(bucket: CDN_BUCKET, prefix: CDN_PREFIX)
|
62
|
+
cdn = r[:contents].collect(&:key)
|
63
|
+
|
64
|
+
local = JSON.parse(File.read(File.join(APP_ROOT, 'tmp', 'assets.json')),
|
65
|
+
symbolize_names: true).map do |_key, asset|
|
66
|
+
File.join(
|
67
|
+
CDN_PREFIX,
|
68
|
+
[[asset[:filename].split(ex = File.extname(asset[:filename])).first,
|
69
|
+
asset[:md5]].join('-'), ex].join
|
70
|
+
)
|
71
|
+
end
|
72
|
+
|
73
|
+
if local.empty?
|
74
|
+
LOG.error 'Local manifest returned zero assets, not purging anything'
|
75
|
+
exit(1)
|
76
|
+
end
|
77
|
+
|
78
|
+
keys = (cdn - local).map do |key|
|
79
|
+
LOG.info "Going to purge #{key}"
|
80
|
+
|
81
|
+
{
|
82
|
+
key: key
|
83
|
+
}
|
84
|
+
end
|
85
|
+
|
86
|
+
d = s3.delete_objects(bucket: CDN_BUCKET, delete: { objects: keys })
|
87
|
+
LOG.info "Purged #{d.deleted.size} objects from s3"
|
88
|
+
end
|
89
|
+
|
56
90
|
desc 'Generate an asset manifest file with sums and hashes'
|
57
91
|
task :manifest do
|
58
92
|
manifest = {}
|
@@ -80,7 +114,7 @@ namespace :bankrupt do
|
|
80
114
|
}
|
81
115
|
end
|
82
116
|
|
83
|
-
LOG.info "Generated asset manifest with #{manifest.keys.size} entries
|
117
|
+
LOG.info "Generated asset manifest with #{manifest.keys.size} entries"
|
84
118
|
|
85
119
|
FileUtils.mkdir_p(File.join(APP_ROOT, 'tmp'))
|
86
120
|
File.write(File.join(APP_ROOT, 'tmp', 'assets.json'),
|
data/lib/bankrupt/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bankrupt
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 2.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Mario Finelli
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-06-
|
11
|
+
date: 2019-06-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: slim
|
@@ -30,6 +30,48 @@ dependencies:
|
|
30
30
|
- - "<"
|
31
31
|
- !ruby/object:Gem::Version
|
32
32
|
version: '5.0'
|
33
|
+
- !ruby/object:Gem::Dependency
|
34
|
+
name: aws-sdk-s3
|
35
|
+
requirement: !ruby/object:Gem::Requirement
|
36
|
+
requirements:
|
37
|
+
- - ">="
|
38
|
+
- !ruby/object:Gem::Version
|
39
|
+
version: '0'
|
40
|
+
type: :development
|
41
|
+
prerelease: false
|
42
|
+
version_requirements: !ruby/object:Gem::Requirement
|
43
|
+
requirements:
|
44
|
+
- - ">="
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
version: '0'
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: mini_mime
|
49
|
+
requirement: !ruby/object:Gem::Requirement
|
50
|
+
requirements:
|
51
|
+
- - ">="
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '0'
|
54
|
+
type: :development
|
55
|
+
prerelease: false
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
requirements:
|
58
|
+
- - ">="
|
59
|
+
- !ruby/object:Gem::Version
|
60
|
+
version: '0'
|
61
|
+
- !ruby/object:Gem::Dependency
|
62
|
+
name: rake
|
63
|
+
requirement: !ruby/object:Gem::Requirement
|
64
|
+
requirements:
|
65
|
+
- - ">="
|
66
|
+
- !ruby/object:Gem::Version
|
67
|
+
version: '0'
|
68
|
+
type: :development
|
69
|
+
prerelease: false
|
70
|
+
version_requirements: !ruby/object:Gem::Requirement
|
71
|
+
requirements:
|
72
|
+
- - ">="
|
73
|
+
- !ruby/object:Gem::Version
|
74
|
+
version: '0'
|
33
75
|
- !ruby/object:Gem::Dependency
|
34
76
|
name: bundler
|
35
77
|
requirement: !ruby/object:Gem::Requirement
|
@@ -189,7 +231,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
189
231
|
requirements:
|
190
232
|
- - ">="
|
191
233
|
- !ruby/object:Gem::Version
|
192
|
-
version: 2.
|
234
|
+
version: 2.4.0
|
193
235
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
194
236
|
requirements:
|
195
237
|
- - ">="
|