middleman-cloudfront 0.0.6 → 0.0.7

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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 4ceeae12fb6b9a58a9af56cb8ad6c8c0a01064ba
4
+ data.tar.gz: 4eccab87e01e2070bf51054b2a59e34f07ac0799
5
+ SHA512:
6
+ metadata.gz: ecaaf4fc80e0d53f7987b75ea905333f7a6b2ea0284f7e15e190851153feb11816e5cec552c16ba67d520f4cb613c6c3cd1ddc6ac78b5f35ba219b2ac1956048
7
+ data.tar.gz: 939a74033b608adf00b574f7dca2715044d4f140801a195c745be13af4bb17c16193f1c175ece3b6adc2576df5e637c6e4a40e82f9f0f452af4b90846bb7e1d0
data/.travis.yml CHANGED
@@ -1,3 +1,6 @@
1
1
  language: ruby
2
2
  rvm:
3
+ - 1.9.2
3
4
  - 1.9.3
5
+ - 2.0.0
6
+ - 2.1.0
data/Guardfile ADDED
@@ -0,0 +1,9 @@
1
+ guard 'rspec', cli: '--drb --profile', all_after_pass: false do
2
+ # Specs
3
+ watch(%r(^spec/.+_spec\.rb$))
4
+ watch('spec/spec_helper.rb') { 'spec' }
5
+ watch(%r(^spec/support/(.+)\.rb$)) { 'spec' }
6
+
7
+ # Files
8
+ watch(%r(^lib/(.+)\.rb$)) { |m| "spec/lib/#{m[1]}_spec.rb" }
9
+ end
data/Rakefile CHANGED
@@ -1,3 +1,5 @@
1
+ require 'rspec/core/rake_task'
2
+
1
3
  require 'bundler'
2
4
  Bundler::GemHelper.install_tasks
3
5
 
@@ -9,8 +11,6 @@ end
9
11
 
10
12
  require 'rake/clean'
11
13
 
12
- task :test => ["cucumber"]
13
-
14
14
  require "middleman-cloudfront/pkg-info"
15
15
 
16
16
  PACKAGE = "#{Middleman::CloudFront::PACKAGE}"
@@ -32,4 +32,6 @@ task :release => :package do
32
32
  end
33
33
  end
34
34
 
35
- task :default => :test
35
+ RSpec::Core::RakeTask.new(:spec)
36
+
37
+ task :default => :spec
@@ -33,6 +33,8 @@ module Middleman
33
33
  # If there are more than 1000 files to invalidate, do so sequentially and wait until each validation is ready.
34
34
  # If there are max 1000 files, create the invalidation and return immediately.
35
35
  files = list_files(options.filter)
36
+ return if files.empty?
37
+
36
38
  if files.count <= INVALIDATION_LIMIT
37
39
  puts "Invalidating #{files.count} files. It might take 10 to 15 minutes until all files are invalidated."
38
40
  puts 'Please check the AWS Management Console to see the status of the invalidation.'
@@ -54,18 +56,18 @@ module Middleman
54
56
  def options
55
57
  ::Middleman::Application.server.inst.cloudfront_options
56
58
  rescue
57
- raise Error, <<-EOF.lines.map(&:strip).join("\n")
58
- ERROR: You need to activate the cloudfront extension in config.rb.
59
-
60
- The example configuration is:
61
- activate :cloudfront do |cf|
62
- cf.access_key_id = 'I'
63
- cf.secret_access_key = 'love'
64
- cf.distribution_id = 'cats'
65
- cf.filter = /\.html/i # default /.*/
66
- cf.after_build = true # default is false
67
- end
68
- EOF
59
+ raise Error, <<-TEXT
60
+ ERROR: You need to activate the cloudfront extension in config.rb.
61
+
62
+ The example configuration is:
63
+ activate :cloudfront do |cf|
64
+ cf.access_key_id = 'I'
65
+ cf.secret_access_key = 'love'
66
+ cf.distribution_id = 'cats'
67
+ cf.filter = /\.html/i # default /.*/
68
+ cf.after_build = true # default is false
69
+ end
70
+ TEXT
69
71
  end
70
72
 
71
73
  def list_files(filter)
@@ -79,9 +81,10 @@ module Middleman
79
81
 
80
82
  # Add directories of index.html files since they have to be
81
83
  # invalidated as well if :directory_indexes is active
82
- index_files = files.select { |f| f =~ %r(/index\.html\z) }
83
- index_file_dirs = index_files.map { |f| f[%r((.+)index\.html\z), 1] }
84
- files.concat index_file_dirs
84
+ files.each do |file|
85
+ file_dir = file.sub(/\bindex\.html\z/, '')
86
+ files << file_dir if file_dir != file
87
+ end
85
88
 
86
89
  # Add leading slash
87
90
  files.map! { |f| f.start_with?('/') ? f : "/#{f}" }
@@ -1,6 +1,6 @@
1
1
  module Middleman
2
2
  module CloudFront
3
3
  PACKAGE = 'middleman-cloudfront'
4
- VERSION = '0.0.6'
4
+ VERSION = '0.0.7'
5
5
  end
6
6
  end
@@ -26,4 +26,5 @@ Gem::Specification.new do |s|
26
26
  s.add_development_dependency "aruba"
27
27
  s.add_development_dependency "fivemat"
28
28
  s.add_development_dependency "simplecov"
29
+ s.add_development_dependency 'guard-rspec', '~> 3.0.3'
29
30
  end
@@ -0,0 +1,58 @@
1
+ require 'spec_helper'
2
+
3
+ require 'fog/aws/models/cdn/distributions'
4
+
5
+ describe Middleman::Cli::CloudFront do
6
+ let(:cloudfront) do
7
+ described_class.new.tap do |cloudfront|
8
+ cloudfront.stub(:options).and_return Middleman::CloudFront::Options.new(
9
+ 'access_key_id_123',
10
+ 'secret_access_key_123',
11
+ 'distribution_id_123',
12
+ 'filter_123',
13
+ 'after_build_123'
14
+ );
15
+ end
16
+ end
17
+
18
+ let(:distribution) { double('distribution', invalidations: double('invalidations')) }
19
+
20
+ describe '#invalidate' do
21
+ before do
22
+ Fog::CDN::AWS::Distributions.any_instance.stub(:get).and_return(distribution)
23
+ distribution.invalidations.stub(:create) do
24
+ double('invalidation', status: 'InProgress', wait_for: ->{} )
25
+ end
26
+ end
27
+
28
+ it 'gets the correct distribution' do
29
+ cloudfront.stub(:list_files).and_return []
30
+ expect_any_instance_of(Fog::CDN::AWS::Distributions).to receive(:get).with('distribution_id_123')
31
+ cloudfront.invalidate
32
+ end
33
+
34
+ context 'when the amount of files to invalidate is under the limit' do
35
+ it 'divides them up in packages and creates one invalidation per package' do
36
+ files = (1..Middleman::Cli::CloudFront::INVALIDATION_LIMIT).map do |i|
37
+ "file_#{i}"
38
+ end
39
+ cloudfront.stub(:list_files).and_return files
40
+ expect(distribution.invalidations).to receive(:create).once.with(paths: files)
41
+ cloudfront.invalidate
42
+ end
43
+ end
44
+
45
+ context 'when the amount of files to invalidate is over the limit' do
46
+ it 'creates only one invalidation with all of them' do
47
+ files = (1..(Middleman::Cli::CloudFront::INVALIDATION_LIMIT * 3)).map do |i|
48
+ "file_#{i}"
49
+ end
50
+ cloudfront.stub(:list_files).and_return files
51
+ expect(distribution.invalidations).to receive(:create).once.with(paths: files[0, Middleman::Cli::CloudFront::INVALIDATION_LIMIT])
52
+ expect(distribution.invalidations).to receive(:create).once.with(paths: files[Middleman::Cli::CloudFront::INVALIDATION_LIMIT, Middleman::Cli::CloudFront::INVALIDATION_LIMIT])
53
+ expect(distribution.invalidations).to receive(:create).once.with(paths: files[Middleman::Cli::CloudFront::INVALIDATION_LIMIT * 2, Middleman::Cli::CloudFront::INVALIDATION_LIMIT])
54
+ cloudfront.invalidate
55
+ end
56
+ end
57
+ end
58
+ end
@@ -0,0 +1,10 @@
1
+ require 'middleman-cloudfront'
2
+
3
+ RSpec.configure do |config|
4
+ config.treat_symbols_as_metadata_keys_with_true_values = true
5
+ config.run_all_when_everything_filtered = true
6
+ config.filter_run :focus
7
+ config.order = 'random'
8
+ end
9
+
10
+ Fog.mock!
metadata CHANGED
@@ -1,8 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: middleman-cloudfront
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.6
5
- prerelease:
4
+ version: 0.0.7
6
5
  platform: ruby
7
6
  authors:
8
7
  - Andrey Korzhuev
@@ -10,12 +9,11 @@ authors:
10
9
  autorequire:
11
10
  bindir: bin
12
11
  cert_chain: []
13
- date: 2013-08-11 00:00:00.000000000 Z
12
+ date: 2014-04-28 00:00:00.000000000 Z
14
13
  dependencies:
15
14
  - !ruby/object:Gem::Dependency
16
15
  name: middleman-core
17
16
  requirement: !ruby/object:Gem::Requirement
18
- none: false
19
17
  requirements:
20
18
  - - ~>
21
19
  - !ruby/object:Gem::Version
@@ -23,7 +21,6 @@ dependencies:
23
21
  type: :runtime
24
22
  prerelease: false
25
23
  version_requirements: !ruby/object:Gem::Requirement
26
- none: false
27
24
  requirements:
28
25
  - - ~>
29
26
  - !ruby/object:Gem::Version
@@ -31,7 +28,6 @@ dependencies:
31
28
  - !ruby/object:Gem::Dependency
32
29
  name: fog
33
30
  requirement: !ruby/object:Gem::Requirement
34
- none: false
35
31
  requirements:
36
32
  - - ~>
37
33
  - !ruby/object:Gem::Version
@@ -39,7 +35,6 @@ dependencies:
39
35
  type: :runtime
40
36
  prerelease: false
41
37
  version_requirements: !ruby/object:Gem::Requirement
42
- none: false
43
38
  requirements:
44
39
  - - ~>
45
40
  - !ruby/object:Gem::Version
@@ -47,83 +42,87 @@ dependencies:
47
42
  - !ruby/object:Gem::Dependency
48
43
  name: rake
49
44
  requirement: !ruby/object:Gem::Requirement
50
- none: false
51
45
  requirements:
52
- - - ! '>='
46
+ - - '>='
53
47
  - !ruby/object:Gem::Version
54
48
  version: '0'
55
49
  type: :development
56
50
  prerelease: false
57
51
  version_requirements: !ruby/object:Gem::Requirement
58
- none: false
59
52
  requirements:
60
- - - ! '>='
53
+ - - '>='
61
54
  - !ruby/object:Gem::Version
62
55
  version: '0'
63
56
  - !ruby/object:Gem::Dependency
64
57
  name: cucumber
65
58
  requirement: !ruby/object:Gem::Requirement
66
- none: false
67
59
  requirements:
68
- - - ! '>='
60
+ - - '>='
69
61
  - !ruby/object:Gem::Version
70
62
  version: '0'
71
63
  type: :development
72
64
  prerelease: false
73
65
  version_requirements: !ruby/object:Gem::Requirement
74
- none: false
75
66
  requirements:
76
- - - ! '>='
67
+ - - '>='
77
68
  - !ruby/object:Gem::Version
78
69
  version: '0'
79
70
  - !ruby/object:Gem::Dependency
80
71
  name: aruba
81
72
  requirement: !ruby/object:Gem::Requirement
82
- none: false
83
73
  requirements:
84
- - - ! '>='
74
+ - - '>='
85
75
  - !ruby/object:Gem::Version
86
76
  version: '0'
87
77
  type: :development
88
78
  prerelease: false
89
79
  version_requirements: !ruby/object:Gem::Requirement
90
- none: false
91
80
  requirements:
92
- - - ! '>='
81
+ - - '>='
93
82
  - !ruby/object:Gem::Version
94
83
  version: '0'
95
84
  - !ruby/object:Gem::Dependency
96
85
  name: fivemat
97
86
  requirement: !ruby/object:Gem::Requirement
98
- none: false
99
87
  requirements:
100
- - - ! '>='
88
+ - - '>='
101
89
  - !ruby/object:Gem::Version
102
90
  version: '0'
103
91
  type: :development
104
92
  prerelease: false
105
93
  version_requirements: !ruby/object:Gem::Requirement
106
- none: false
107
94
  requirements:
108
- - - ! '>='
95
+ - - '>='
109
96
  - !ruby/object:Gem::Version
110
97
  version: '0'
111
98
  - !ruby/object:Gem::Dependency
112
99
  name: simplecov
113
100
  requirement: !ruby/object:Gem::Requirement
114
- none: false
115
101
  requirements:
116
- - - ! '>='
102
+ - - '>='
117
103
  - !ruby/object:Gem::Version
118
104
  version: '0'
119
105
  type: :development
120
106
  prerelease: false
121
107
  version_requirements: !ruby/object:Gem::Requirement
122
- none: false
123
108
  requirements:
124
- - - ! '>='
109
+ - - '>='
125
110
  - !ruby/object:Gem::Version
126
111
  version: '0'
112
+ - !ruby/object:Gem::Dependency
113
+ name: guard-rspec
114
+ requirement: !ruby/object:Gem::Requirement
115
+ requirements:
116
+ - - ~>
117
+ - !ruby/object:Gem::Version
118
+ version: 3.0.3
119
+ type: :development
120
+ prerelease: false
121
+ version_requirements: !ruby/object:Gem::Requirement
122
+ requirements:
123
+ - - ~>
124
+ - !ruby/object:Gem::Version
125
+ version: 3.0.3
127
126
  description: Adds ability to invalidate a specific set of files in your CloudFront
128
127
  cache
129
128
  email:
@@ -135,6 +134,7 @@ files:
135
134
  - .gitignore
136
135
  - .travis.yml
137
136
  - Gemfile
137
+ - Guardfile
138
138
  - LICENSE
139
139
  - README.md
140
140
  - Rakefile
@@ -145,29 +145,30 @@ files:
145
145
  - lib/middleman-cloudfront/pkg-info.rb
146
146
  - lib/middleman_extension.rb
147
147
  - middleman-cloudfront.gemspec
148
+ - spec/lib/middleman-cloudfront/commands_spec.rb
149
+ - spec/spec_helper.rb
148
150
  homepage: https://github.com/andrusha/middleman-cloudfront
149
151
  licenses: []
152
+ metadata: {}
150
153
  post_install_message:
151
154
  rdoc_options: []
152
155
  require_paths:
153
156
  - lib
154
157
  required_ruby_version: !ruby/object:Gem::Requirement
155
- none: false
156
158
  requirements:
157
- - - ! '>='
159
+ - - '>='
158
160
  - !ruby/object:Gem::Version
159
161
  version: '0'
160
162
  required_rubygems_version: !ruby/object:Gem::Requirement
161
- none: false
162
163
  requirements:
163
- - - ! '>='
164
+ - - '>='
164
165
  - !ruby/object:Gem::Version
165
166
  version: '0'
166
167
  requirements: []
167
168
  rubyforge_project: middleman-cloudfront
168
- rubygems_version: 1.8.23
169
+ rubygems_version: 2.0.14
169
170
  signing_key:
170
- specification_version: 3
171
+ specification_version: 4
171
172
  summary: Invalidate CloudFront cache after deployment to S3
172
173
  test_files:
173
174
  - features/support/env.rb