versioncake 3.4.0 → 4.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.
@@ -2,8 +2,8 @@
2
2
 
3
3
  source "https://rubygems.org"
4
4
 
5
- gem "actionpack", "~> 4.2.0"
6
- gem "activesupport", "~> 4.2.0"
7
- gem "railties", "~> 4.2.0"
5
+ gem "actionpack", "~> 5.2.0"
6
+ gem "activesupport", "~> 5.2.0"
7
+ gem "railties", "~> 5.2.0"
8
8
 
9
9
  gemspec path: "../"
@@ -0,0 +1,122 @@
1
+ PATH
2
+ remote: ..
3
+ specs:
4
+ versioncake (3.4.0)
5
+ actionpack (>= 5.0)
6
+ activesupport (>= 5.0)
7
+ railties (>= 5.0)
8
+ tzinfo
9
+
10
+ GEM
11
+ remote: https://rubygems.org/
12
+ specs:
13
+ actionpack (5.2.4.1)
14
+ actionview (= 5.2.4.1)
15
+ activesupport (= 5.2.4.1)
16
+ rack (~> 2.0, >= 2.0.8)
17
+ rack-test (>= 0.6.3)
18
+ rails-dom-testing (~> 2.0)
19
+ rails-html-sanitizer (~> 1.0, >= 1.0.2)
20
+ actionview (5.2.4.1)
21
+ activesupport (= 5.2.4.1)
22
+ builder (~> 3.1)
23
+ erubi (~> 1.4)
24
+ rails-dom-testing (~> 2.0)
25
+ rails-html-sanitizer (~> 1.0, >= 1.0.3)
26
+ activesupport (5.2.4.1)
27
+ concurrent-ruby (~> 1.0, >= 1.0.2)
28
+ i18n (>= 0.7, < 2)
29
+ minitest (~> 5.1)
30
+ tzinfo (~> 1.1)
31
+ appraisal (2.2.0)
32
+ bundler
33
+ rake
34
+ thor (>= 0.14.0)
35
+ builder (3.2.4)
36
+ concurrent-ruby (1.1.6)
37
+ coveralls (0.8.21)
38
+ json (>= 1.8, < 3)
39
+ simplecov (~> 0.14.1)
40
+ term-ansicolor (~> 1.3)
41
+ thor (~> 0.19.4)
42
+ tins (~> 1.6)
43
+ crass (1.0.6)
44
+ diff-lcs (1.3)
45
+ docile (1.1.5)
46
+ erubi (1.9.0)
47
+ i18n (1.8.2)
48
+ concurrent-ruby (~> 1.0)
49
+ json (2.2.0)
50
+ loofah (2.4.0)
51
+ crass (~> 1.0.2)
52
+ nokogiri (>= 1.5.9)
53
+ method_source (0.9.2)
54
+ mini_portile2 (2.4.0)
55
+ minitest (5.14.0)
56
+ nokogiri (1.10.9)
57
+ mini_portile2 (~> 2.4.0)
58
+ rack (2.2.2)
59
+ rack-test (1.1.0)
60
+ rack (>= 1.0, < 3)
61
+ rails-dom-testing (2.0.3)
62
+ activesupport (>= 4.2.0)
63
+ nokogiri (>= 1.6)
64
+ rails-html-sanitizer (1.3.0)
65
+ loofah (~> 2.3)
66
+ railties (5.2.4.1)
67
+ actionpack (= 5.2.4.1)
68
+ activesupport (= 5.2.4.1)
69
+ method_source
70
+ rake (>= 0.8.7)
71
+ thor (>= 0.19.0, < 2.0)
72
+ rake (13.0.1)
73
+ rspec (3.7.0)
74
+ rspec-core (~> 3.7.0)
75
+ rspec-expectations (~> 3.7.0)
76
+ rspec-mocks (~> 3.7.0)
77
+ rspec-core (3.7.1)
78
+ rspec-support (~> 3.7.0)
79
+ rspec-expectations (3.7.0)
80
+ diff-lcs (>= 1.2.0, < 2.0)
81
+ rspec-support (~> 3.7.0)
82
+ rspec-mocks (3.7.0)
83
+ diff-lcs (>= 1.2.0, < 2.0)
84
+ rspec-support (~> 3.7.0)
85
+ rspec-rails (3.7.2)
86
+ actionpack (>= 3.0)
87
+ activesupport (>= 3.0)
88
+ railties (>= 3.0)
89
+ rspec-core (~> 3.7.0)
90
+ rspec-expectations (~> 3.7.0)
91
+ rspec-mocks (~> 3.7.0)
92
+ rspec-support (~> 3.7.0)
93
+ rspec-support (3.7.1)
94
+ simplecov (0.14.1)
95
+ docile (~> 1.1.0)
96
+ json (>= 1.8, < 3)
97
+ simplecov-html (~> 0.10.0)
98
+ simplecov-html (0.10.2)
99
+ term-ansicolor (1.6.0)
100
+ tins (~> 1.0)
101
+ thor (0.19.4)
102
+ thread_safe (0.3.6)
103
+ tins (1.15.0)
104
+ tzinfo (1.2.6)
105
+ thread_safe (~> 0.1)
106
+
107
+ PLATFORMS
108
+ ruby
109
+
110
+ DEPENDENCIES
111
+ actionpack (~> 5.2.0)
112
+ activesupport (~> 5.2.0)
113
+ appraisal
114
+ coveralls
115
+ railties (~> 5.2.0)
116
+ rake
117
+ rspec
118
+ rspec-rails
119
+ versioncake!
120
+
121
+ BUNDLED WITH
122
+ 1.17.2
@@ -5,7 +5,7 @@ module VersionCake
5
5
  class Configuration
6
6
  VERSION_KEY_DEFAULT = 'api_version'
7
7
 
8
- attr_reader :extraction_strategies, :response_strategies, :supported_version_numbers,
8
+ attr_reader :extraction_strategies, :response_strategies,
9
9
  :versioned_resources, :default_version, :missing_version_use_unversioned_template
10
10
  attr_accessor :missing_version, :version_key, :rails_view_versioning
11
11
 
@@ -4,7 +4,7 @@ module VersionCake
4
4
  def execute(request)
5
5
  version = nil
6
6
  request.path.split('/').find do |part|
7
- next unless match = part.match(%r{v(?<version>\d+)})
7
+ next unless match = part.match(%r{\Av(?<version>\d+)\z})
8
8
  version = match[:version]
9
9
  break
10
10
  end
@@ -1,3 +1,3 @@
1
1
  module VersionCake
2
- VERSION = '3.4.0'
2
+ VERSION = '4.0.0'
3
3
  end
@@ -6,8 +6,18 @@ require 'action_view'
6
6
  ActionView::LookupContext.register_detail(:versions){ [] }
7
7
 
8
8
  ActionView::PathResolver.class_eval do
9
- # not sure why we are doing this yet, but looks like a good idea
10
- if ActionPack::VERSION::MAJOR >= 4 && ActionPack::VERSION::MINOR >= 1 || ActionPack::VERSION::MAJOR >= 5
9
+ if ActionPack::VERSION::MAJOR >= 6
10
+ ActionView::PathResolver::EXTENSIONS.replace({
11
+ locale: ".",
12
+ formats: ".",
13
+ versions: ".",
14
+ variants: "+",
15
+ handlers: "."
16
+ })
17
+ Kernel::silence_warnings {
18
+ ActionView::PathResolver::DEFAULT_PATTERN = ":prefix/:action{.:locale,}{.:formats,}{.:versions,}{+:variants,}{.:handlers,}"
19
+ }
20
+ elsif ActionPack::VERSION::MAJOR >= 4 && ActionPack::VERSION::MINOR >= 1 || ActionPack::VERSION::MAJOR >= 5
11
21
  ActionView::PathResolver::EXTENSIONS.replace({
12
22
  locale: ".",
13
23
  formats: ".",
@@ -20,13 +30,6 @@ ActionView::PathResolver.class_eval do
20
30
  @pattern = pattern || ":prefix/:action{.:locale,}{.:formats,}{+:variants,}{.:versions,}{.:handlers,}"
21
31
  super()
22
32
  end
23
- else
24
- ActionView::PathResolver::EXTENSIONS.replace [:locale, :formats, :versions, :handlers]
25
-
26
- # The query builder has the @details from the lookup_context and will
27
- # match the detail name to the string in the pattern, so we must append
28
- # it to the default pattern
29
- ActionView::PathResolver::DEFAULT_PATTERN.replace ":prefix/:action{.:locale,}{.:formats,}{.:versions,}{.:handlers,}"
30
33
  end
31
34
 
32
35
  # The default extract handler expects that the handler is the last extension and
@@ -27,7 +27,7 @@ describe VersionCake::Rack::Middleware do
27
27
 
28
28
  it "test yml test cases" do
29
29
  begin
30
- _response_status, _response_headers, response = app.request(method, '/renders', headers.merge(params: params))
30
+ response = app.request(method, '/renders', headers.merge(params: params))
31
31
  expect(response.body).to(eq(test_response), custom_message(headers, params, method, response.body, test_response))
32
32
  rescue => e
33
33
  raise custom_message(headers, params, method, response.body, test_response) + ", but it failed with an exception '#{e.message}'"
@@ -53,7 +53,7 @@ describe VersionCake::Rack::Middleware do
53
53
 
54
54
  context 'and the request does not contain a version' do
55
55
  it 'does not include a version (rails will convert nil => unversioned template)' do
56
- _response_status, _response_headers, response = app.request('get', '/renders')
56
+ response = app.request('get', '/renders')
57
57
  expect(response.body).to eq 'version is ' # nil
58
58
  end
59
59
  end
@@ -33,19 +33,10 @@ describe ActionView::PathResolver do
33
33
  it { expect(template_format).to eq 'application/json' }
34
34
  end
35
35
 
36
- context 'when in Rails >=4.1' do
37
- before do
38
- unless (ActionPack::VERSION::MAJOR == 4 && ActionPack::VERSION::MINOR >= 1) ||
39
- ActionPack::VERSION::MAJOR > 5
40
- skip('Template variants are only available in Rails >=4.1')
41
- end
42
- end
43
-
44
- context 'when handler, format, variant and version are present' do
45
- let(:template_extension) { 'application.json+tablet.v1.jbuilder' }
46
-
47
- it { expect(template_format).to eq 'application/json' }
48
- end
36
+ context 'when handler, format, variant and version are present' do
37
+ let(:template_extension) { 'application.json+tablet.v1.jbuilder' }
38
+
39
+ it { expect(template_format).to eq 'application/json' }
49
40
  end
50
41
  end
51
42
  end
@@ -10,6 +10,26 @@ describe VersionCake::PathParameterStrategy do
10
10
  it { is_expected.to eq 11 }
11
11
  end
12
12
 
13
+ context "a request with a substring matching /v\d+/ returns nil" do
14
+ context "as a postpended string" do
15
+ let(:request) { instance_double('Request', path: 'parameter/aav11/parameter') }
16
+
17
+ it { is_expected.to be_nil }
18
+ end
19
+
20
+ context "as a prepended string" do
21
+ let(:request) { instance_double('Request', path: 'parameter/v11aa/parameter') }
22
+
23
+ it { is_expected.to be_nil }
24
+ end
25
+
26
+ context "as an interstital string" do
27
+ let(:request) { instance_double('Request', path: 'parameter/aav11aa/parameter') }
28
+
29
+ it { is_expected.to be_nil }
30
+ end
31
+ end
32
+
13
33
  context "a request without an api_version path parameter returns nil" do
14
34
  let(:request) { instance_double('Request', path: 'parameter/parameter') }
15
35
 
@@ -19,16 +19,16 @@ Gem::Specification.new do |s|
19
19
 
20
20
  s.required_ruby_version = '>= 1.9.2'
21
21
 
22
- s.add_dependency('actionpack', '>= 3.2')
23
- s.add_dependency('activesupport', '>= 3.2')
24
- s.add_dependency('railties', '>= 3.2')
25
- s.add_dependency('tzinfo')
22
+ s.add_dependency('actionpack', '~> 5.0')
23
+ s.add_dependency('activesupport', '~> 5.0')
24
+ s.add_dependency('railties', '~> 5.0')
25
+ s.add_dependency('tzinfo', '~> 1.2')
26
26
 
27
- s.add_development_dependency 'appraisal'
28
- s.add_development_dependency 'coveralls'
29
- s.add_development_dependency 'rake'
27
+ s.add_development_dependency 'appraisal', '~> 2.2'
28
+ s.add_development_dependency 'coveralls', '~> 0.8'
29
+ s.add_development_dependency 'rake', '~> 13.0'
30
30
 
31
- s.add_development_dependency 'rspec'
32
- s.add_development_dependency 'rspec-rails'
31
+ s.add_development_dependency 'rspec', '~> 3.6'
32
+ s.add_development_dependency 'rspec-rails', '~> 3.6'
33
33
 
34
34
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: versioncake
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.4.0
4
+ version: 4.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jim Jones
@@ -9,134 +9,134 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2018-03-04 00:00:00.000000000 Z
12
+ date: 2020-03-11 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: actionpack
16
16
  requirement: !ruby/object:Gem::Requirement
17
17
  requirements:
18
- - - ">="
18
+ - - "~>"
19
19
  - !ruby/object:Gem::Version
20
- version: '3.2'
20
+ version: '5.0'
21
21
  type: :runtime
22
22
  prerelease: false
23
23
  version_requirements: !ruby/object:Gem::Requirement
24
24
  requirements:
25
- - - ">="
25
+ - - "~>"
26
26
  - !ruby/object:Gem::Version
27
- version: '3.2'
27
+ version: '5.0'
28
28
  - !ruby/object:Gem::Dependency
29
29
  name: activesupport
30
30
  requirement: !ruby/object:Gem::Requirement
31
31
  requirements:
32
- - - ">="
32
+ - - "~>"
33
33
  - !ruby/object:Gem::Version
34
- version: '3.2'
34
+ version: '5.0'
35
35
  type: :runtime
36
36
  prerelease: false
37
37
  version_requirements: !ruby/object:Gem::Requirement
38
38
  requirements:
39
- - - ">="
39
+ - - "~>"
40
40
  - !ruby/object:Gem::Version
41
- version: '3.2'
41
+ version: '5.0'
42
42
  - !ruby/object:Gem::Dependency
43
43
  name: railties
44
44
  requirement: !ruby/object:Gem::Requirement
45
45
  requirements:
46
- - - ">="
46
+ - - "~>"
47
47
  - !ruby/object:Gem::Version
48
- version: '3.2'
48
+ version: '5.0'
49
49
  type: :runtime
50
50
  prerelease: false
51
51
  version_requirements: !ruby/object:Gem::Requirement
52
52
  requirements:
53
- - - ">="
53
+ - - "~>"
54
54
  - !ruby/object:Gem::Version
55
- version: '3.2'
55
+ version: '5.0'
56
56
  - !ruby/object:Gem::Dependency
57
57
  name: tzinfo
58
58
  requirement: !ruby/object:Gem::Requirement
59
59
  requirements:
60
- - - ">="
60
+ - - "~>"
61
61
  - !ruby/object:Gem::Version
62
- version: '0'
62
+ version: '1.2'
63
63
  type: :runtime
64
64
  prerelease: false
65
65
  version_requirements: !ruby/object:Gem::Requirement
66
66
  requirements:
67
- - - ">="
67
+ - - "~>"
68
68
  - !ruby/object:Gem::Version
69
- version: '0'
69
+ version: '1.2'
70
70
  - !ruby/object:Gem::Dependency
71
71
  name: appraisal
72
72
  requirement: !ruby/object:Gem::Requirement
73
73
  requirements:
74
- - - ">="
74
+ - - "~>"
75
75
  - !ruby/object:Gem::Version
76
- version: '0'
76
+ version: '2.2'
77
77
  type: :development
78
78
  prerelease: false
79
79
  version_requirements: !ruby/object:Gem::Requirement
80
80
  requirements:
81
- - - ">="
81
+ - - "~>"
82
82
  - !ruby/object:Gem::Version
83
- version: '0'
83
+ version: '2.2'
84
84
  - !ruby/object:Gem::Dependency
85
85
  name: coveralls
86
86
  requirement: !ruby/object:Gem::Requirement
87
87
  requirements:
88
- - - ">="
88
+ - - "~>"
89
89
  - !ruby/object:Gem::Version
90
- version: '0'
90
+ version: '0.8'
91
91
  type: :development
92
92
  prerelease: false
93
93
  version_requirements: !ruby/object:Gem::Requirement
94
94
  requirements:
95
- - - ">="
95
+ - - "~>"
96
96
  - !ruby/object:Gem::Version
97
- version: '0'
97
+ version: '0.8'
98
98
  - !ruby/object:Gem::Dependency
99
99
  name: rake
100
100
  requirement: !ruby/object:Gem::Requirement
101
101
  requirements:
102
- - - ">="
102
+ - - "~>"
103
103
  - !ruby/object:Gem::Version
104
- version: '0'
104
+ version: '13.0'
105
105
  type: :development
106
106
  prerelease: false
107
107
  version_requirements: !ruby/object:Gem::Requirement
108
108
  requirements:
109
- - - ">="
109
+ - - "~>"
110
110
  - !ruby/object:Gem::Version
111
- version: '0'
111
+ version: '13.0'
112
112
  - !ruby/object:Gem::Dependency
113
113
  name: rspec
114
114
  requirement: !ruby/object:Gem::Requirement
115
115
  requirements:
116
- - - ">="
116
+ - - "~>"
117
117
  - !ruby/object:Gem::Version
118
- version: '0'
118
+ version: '3.6'
119
119
  type: :development
120
120
  prerelease: false
121
121
  version_requirements: !ruby/object:Gem::Requirement
122
122
  requirements:
123
- - - ">="
123
+ - - "~>"
124
124
  - !ruby/object:Gem::Version
125
- version: '0'
125
+ version: '3.6'
126
126
  - !ruby/object:Gem::Dependency
127
127
  name: rspec-rails
128
128
  requirement: !ruby/object:Gem::Requirement
129
129
  requirements:
130
- - - ">="
130
+ - - "~>"
131
131
  - !ruby/object:Gem::Version
132
- version: '0'
132
+ version: '3.6'
133
133
  type: :development
134
134
  prerelease: false
135
135
  version_requirements: !ruby/object:Gem::Requirement
136
136
  requirements:
137
- - - ">="
137
+ - - "~>"
138
138
  - !ruby/object:Gem::Version
139
- version: '0'
139
+ version: '3.6'
140
140
  description: Render versioned views automagically based on the clients requested version.
141
141
  email:
142
142
  - jim.jones1@gmail.com
@@ -159,16 +159,12 @@ files:
159
159
  - Rakefile
160
160
  - bin/versioncake
161
161
  - gemfiles/.bundle/config
162
- - gemfiles/rails3.2.gemfile
163
- - gemfiles/rails3.2.gemfile.lock
164
- - gemfiles/rails4.0.gemfile
165
- - gemfiles/rails4.0.gemfile.lock
166
- - gemfiles/rails4.1.gemfile
167
- - gemfiles/rails4.1.gemfile.lock
168
- - gemfiles/rails4.2.gemfile
169
- - gemfiles/rails4.2.gemfile.lock
170
162
  - gemfiles/rails5.0.gemfile
171
163
  - gemfiles/rails5.0.gemfile.lock
164
+ - gemfiles/rails5.2.gemfile
165
+ - gemfiles/rails5.2.gemfile.lock
166
+ - gemfiles/rails6.0.gemfile
167
+ - gemfiles/rails6.0.gemfile.lock
172
168
  - images/versioncake-logo450x100.png
173
169
  - lib/generators/templates/versioncake.rb
174
170
  - lib/generators/versioncake/install_generator.rb
@@ -271,8 +267,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
271
267
  - !ruby/object:Gem::Version
272
268
  version: '0'
273
269
  requirements: []
274
- rubyforge_project:
275
- rubygems_version: 2.4.8
270
+ rubygems_version: 3.0.3
276
271
  signing_key:
277
272
  specification_version: 4
278
273
  summary: Easily render versions of your rails views.