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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 1dca115afeb3234502a119751813a7ae7e0d17ea19a7f0051386544211998eed
4
- data.tar.gz: c72b72acc9233dbd5e096896c42649953d3c1bc8facf2ceff649d7d5eb6deae7
3
+ metadata.gz: c128faa48d53c51a942b44223ae14a559dc3e3ce3addcbb5e54c24a26501d936
4
+ data.tar.gz: 04e4231a59a84d423b8d08be530b2b043a49cd59a4f71635f183eb75ea92ce26
5
5
  SHA512:
6
- metadata.gz: 3242ca78af837ea8979f1ad3b0ca329a88f1fe10716fa18ad0607173c0648090b1b3824fc58a087b4723277b1f6f1aa7b02806b3015f3ce1c51b054b8895cbf2
7
- data.tar.gz: 7c9c0c97bb5d5ccf6b7c25d15053d8ea932d3ee6b7f8d728ef51e7e3b117f4003267bbc67ef6aa636d3bc76e7d38cb8b2d38771dce4e07152c8f1e94f070dd92
6
+ metadata.gz: 5365d3ab584d89f8826bc1a93eafd0b3792024e79f8e77e3aa00d750e52974c365d1d22336ddd6e2bb54c1e4c28754437f86ca4303ab16ad6e275cf598f8ca5c
7
+ data.tar.gz: 7845cf9952c856d2810e598b6e1946c98be58b9d581d59033102e4c6dbc2ad0514330305be609693f14d8096325fa22b7e704e84c59ade72a3591cc4c0853abd
data/.gitignore CHANGED
@@ -3,6 +3,7 @@
3
3
  /coverage
4
4
  /doc
5
5
  /Gemfile.lock
6
+ /spec/fixtures/tmp
6
7
  /vendor/bundle
7
8
  /*.gem
8
9
  /*.gem.asc
data/.rubocop.yml CHANGED
@@ -2,22 +2,33 @@
2
2
  require: rubocop-rspec
3
3
 
4
4
  AllCops:
5
- TargetRubyVersion: 2.3.7
5
+ TargetRubyVersion: 2.4.0
6
6
 
7
7
  Layout/ExtraSpacing:
8
8
  AllowForAlignment: false
9
9
 
10
10
  Metrics/BlockLength:
11
- Max: 60
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
@@ -3,7 +3,6 @@ sudo: false
3
3
 
4
4
  language: ruby
5
5
  rvm:
6
- - 2.3
7
6
  - 2.4
8
7
  - 2.5
9
8
  - 2.6
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.3.0'
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'
@@ -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'),
@@ -15,5 +15,5 @@
15
15
  # limitations under the License.
16
16
 
17
17
  module Bankrupt
18
- VERSION = '1.1.0'
18
+ VERSION = '2.0.0'
19
19
  end
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: 1.1.0
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-05 00:00:00.000000000 Z
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.3.0
234
+ version: 2.4.0
193
235
  required_rubygems_version: !ruby/object:Gem::Requirement
194
236
  requirements:
195
237
  - - ">="