bankrupt 1.1.0 → 2.0.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
- - ">="
|