versioncake 3.4.0 → 4.0.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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.