rails_versioned_routing 1.1.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.
Files changed (50) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE +20 -0
  3. data/Rakefile +29 -0
  4. data/lib/rails_versioned_routing/railtie.rb +7 -0
  5. data/lib/rails_versioned_routing.rb +202 -0
  6. data/lib/tasks/rails_versioned_routing_tasks.rake +5 -0
  7. data/test/dummy/README.rdoc +28 -0
  8. data/test/dummy/Rakefile +6 -0
  9. data/test/dummy/app/assets/javascripts/application.js +13 -0
  10. data/test/dummy/app/assets/stylesheets/application.css +13 -0
  11. data/test/dummy/app/controllers/application_controller.rb +5 -0
  12. data/test/dummy/app/controllers/sample_controller.rb +5 -0
  13. data/test/dummy/app/controllers/v1/sample_controller.rb +7 -0
  14. data/test/dummy/app/controllers/v2/sample_controller.rb +11 -0
  15. data/test/dummy/app/controllers/v3/sample_controller.rb +11 -0
  16. data/test/dummy/app/helpers/application_helper.rb +2 -0
  17. data/test/dummy/app/views/layouts/application.html.erb +14 -0
  18. data/test/dummy/bin/bundle +3 -0
  19. data/test/dummy/bin/rails +4 -0
  20. data/test/dummy/bin/rake +4 -0
  21. data/test/dummy/config/application.rb +23 -0
  22. data/test/dummy/config/boot.rb +5 -0
  23. data/test/dummy/config/database.yml +25 -0
  24. data/test/dummy/config/environment.rb +5 -0
  25. data/test/dummy/config/environments/development.rb +32 -0
  26. data/test/dummy/config/environments/production.rb +80 -0
  27. data/test/dummy/config/environments/test.rb +39 -0
  28. data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
  29. data/test/dummy/config/initializers/filter_parameter_logging.rb +4 -0
  30. data/test/dummy/config/initializers/inflections.rb +16 -0
  31. data/test/dummy/config/initializers/mime_types.rb +5 -0
  32. data/test/dummy/config/initializers/secret_token.rb +12 -0
  33. data/test/dummy/config/initializers/session_store.rb +3 -0
  34. data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
  35. data/test/dummy/config/locales/en.yml +23 -0
  36. data/test/dummy/config/routes.rb +22 -0
  37. data/test/dummy/config.ru +4 -0
  38. data/test/dummy/db/development.sqlite3 +0 -0
  39. data/test/dummy/db/schema.rb +16 -0
  40. data/test/dummy/db/test.sqlite3 +0 -0
  41. data/test/dummy/log/development.log +3 -0
  42. data/test/dummy/log/test.log +2807 -0
  43. data/test/dummy/public/404.html +58 -0
  44. data/test/dummy/public/422.html +58 -0
  45. data/test/dummy/public/500.html +57 -0
  46. data/test/dummy/public/favicon.ico +0 -0
  47. data/test/test_helper.rb +15 -0
  48. data/test/versioned_presentation_test.rb +30 -0
  49. data/test/versioned_routing_test.rb +29 -0
  50. metadata +163 -0
@@ -0,0 +1,58 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>The page you were looking for doesn't exist (404)</title>
5
+ <style>
6
+ body {
7
+ background-color: #EFEFEF;
8
+ color: #2E2F30;
9
+ text-align: center;
10
+ font-family: arial, sans-serif;
11
+ }
12
+
13
+ div.dialog {
14
+ width: 25em;
15
+ margin: 4em auto 0 auto;
16
+ border: 1px solid #CCC;
17
+ border-right-color: #999;
18
+ border-left-color: #999;
19
+ border-bottom-color: #BBB;
20
+ border-top: #B00100 solid 4px;
21
+ border-top-left-radius: 9px;
22
+ border-top-right-radius: 9px;
23
+ background-color: white;
24
+ padding: 7px 4em 0 4em;
25
+ }
26
+
27
+ h1 {
28
+ font-size: 100%;
29
+ color: #730E15;
30
+ line-height: 1.5em;
31
+ }
32
+
33
+ body > p {
34
+ width: 33em;
35
+ margin: 0 auto 1em;
36
+ padding: 1em 0;
37
+ background-color: #F7F7F7;
38
+ border: 1px solid #CCC;
39
+ border-right-color: #999;
40
+ border-bottom-color: #999;
41
+ border-bottom-left-radius: 4px;
42
+ border-bottom-right-radius: 4px;
43
+ border-top-color: #DADADA;
44
+ color: #666;
45
+ box-shadow:0 3px 8px rgba(50, 50, 50, 0.17);
46
+ }
47
+ </style>
48
+ </head>
49
+
50
+ <body>
51
+ <!-- This file lives in public/404.html -->
52
+ <div class="dialog">
53
+ <h1>The page you were looking for doesn't exist.</h1>
54
+ <p>You may have mistyped the address or the page may have moved.</p>
55
+ </div>
56
+ <p>If you are the application owner check the logs for more information.</p>
57
+ </body>
58
+ </html>
@@ -0,0 +1,58 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>The change you wanted was rejected (422)</title>
5
+ <style>
6
+ body {
7
+ background-color: #EFEFEF;
8
+ color: #2E2F30;
9
+ text-align: center;
10
+ font-family: arial, sans-serif;
11
+ }
12
+
13
+ div.dialog {
14
+ width: 25em;
15
+ margin: 4em auto 0 auto;
16
+ border: 1px solid #CCC;
17
+ border-right-color: #999;
18
+ border-left-color: #999;
19
+ border-bottom-color: #BBB;
20
+ border-top: #B00100 solid 4px;
21
+ border-top-left-radius: 9px;
22
+ border-top-right-radius: 9px;
23
+ background-color: white;
24
+ padding: 7px 4em 0 4em;
25
+ }
26
+
27
+ h1 {
28
+ font-size: 100%;
29
+ color: #730E15;
30
+ line-height: 1.5em;
31
+ }
32
+
33
+ body > p {
34
+ width: 33em;
35
+ margin: 0 auto 1em;
36
+ padding: 1em 0;
37
+ background-color: #F7F7F7;
38
+ border: 1px solid #CCC;
39
+ border-right-color: #999;
40
+ border-bottom-color: #999;
41
+ border-bottom-left-radius: 4px;
42
+ border-bottom-right-radius: 4px;
43
+ border-top-color: #DADADA;
44
+ color: #666;
45
+ box-shadow:0 3px 8px rgba(50, 50, 50, 0.17);
46
+ }
47
+ </style>
48
+ </head>
49
+
50
+ <body>
51
+ <!-- This file lives in public/422.html -->
52
+ <div class="dialog">
53
+ <h1>The change you wanted was rejected.</h1>
54
+ <p>Maybe you tried to change something you didn't have access to.</p>
55
+ </div>
56
+ <p>If you are the application owner check the logs for more information.</p>
57
+ </body>
58
+ </html>
@@ -0,0 +1,57 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>We're sorry, but something went wrong (500)</title>
5
+ <style>
6
+ body {
7
+ background-color: #EFEFEF;
8
+ color: #2E2F30;
9
+ text-align: center;
10
+ font-family: arial, sans-serif;
11
+ }
12
+
13
+ div.dialog {
14
+ width: 25em;
15
+ margin: 4em auto 0 auto;
16
+ border: 1px solid #CCC;
17
+ border-right-color: #999;
18
+ border-left-color: #999;
19
+ border-bottom-color: #BBB;
20
+ border-top: #B00100 solid 4px;
21
+ border-top-left-radius: 9px;
22
+ border-top-right-radius: 9px;
23
+ background-color: white;
24
+ padding: 7px 4em 0 4em;
25
+ }
26
+
27
+ h1 {
28
+ font-size: 100%;
29
+ color: #730E15;
30
+ line-height: 1.5em;
31
+ }
32
+
33
+ body > p {
34
+ width: 33em;
35
+ margin: 0 auto 1em;
36
+ padding: 1em 0;
37
+ background-color: #F7F7F7;
38
+ border: 1px solid #CCC;
39
+ border-right-color: #999;
40
+ border-bottom-color: #999;
41
+ border-bottom-left-radius: 4px;
42
+ border-bottom-right-radius: 4px;
43
+ border-top-color: #DADADA;
44
+ color: #666;
45
+ box-shadow:0 3px 8px rgba(50, 50, 50, 0.17);
46
+ }
47
+ </style>
48
+ </head>
49
+
50
+ <body>
51
+ <!-- This file lives in public/500.html -->
52
+ <div class="dialog">
53
+ <h1>We're sorry, but something went wrong.</h1>
54
+ </div>
55
+ <p>If you are the application owner check the logs for more information.</p>
56
+ </body>
57
+ </html>
File without changes
@@ -0,0 +1,15 @@
1
+ # Configure Rails Environment
2
+ ENV["RAILS_ENV"] = "test"
3
+
4
+ require File.expand_path("../dummy/config/environment.rb", __FILE__)
5
+ require "rails/test_help"
6
+
7
+ Rails.backtrace_cleaner.remove_silencers!
8
+
9
+ # Load support files
10
+ Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each { |f| require f }
11
+
12
+ # Load fixtures from the engine
13
+ if ActiveSupport::TestCase.method_defined?(:fixture_path=)
14
+ ActiveSupport::TestCase.fixture_path = File.expand_path("../fixtures", __FILE__)
15
+ end
@@ -0,0 +1,30 @@
1
+ require 'test_helper'
2
+
3
+ class VersionedRoutingTest < ActionDispatch::IntegrationTest
4
+ def names(version)
5
+ routes = RailsVersionedRouting.group_by_version
6
+ routes[version].map(&:defaults)
7
+ end
8
+
9
+ test "version contains routes defined within version" do
10
+ assert(names(3).include?({:controller=>"v3/sample", :action=>"a_path_only_in_v3"}))
11
+ end
12
+
13
+ test "version contains routes defined within version if the HTTP method differs" do
14
+ assert(names(3).include?({:controller=>"v3/sample", :action=>"posted_a_path_only_in_v3"}))
15
+ end
16
+
17
+ test "version does not contains routes defined in later version" do
18
+ assert(!names(2).include?({:controller=>"v3/sample", :action=>"a_path_only_in_v3"}))
19
+ end
20
+
21
+ test "version contains routes defined in earlier version" do
22
+ assert(names(3).include?({:controller=>"v2/sample", :action=>"a_path_in_v2"}))
23
+ assert(names(3).include?({:controller=>"v1/sample", :action=>"a_path_in_v1"}))
24
+ end
25
+
26
+ test "version does not contain routes overridden in earlier version" do
27
+ assert(!names(3).include?({:controller=>"v1/sample", :action=>"a_path_overridden_from_v1"}))
28
+ assert(!names(2).include?({:controller=>"v1/sample", :action=>"a_path_overridden_from_v1"}))
29
+ end
30
+ end
@@ -0,0 +1,29 @@
1
+ require 'test_helper'
2
+
3
+ class VersionedRoutingTest < ActionDispatch::IntegrationTest
4
+ test "a request without a verison cascades to versionless routes" do
5
+ get '/final_fallback'
6
+ assert_equal(response.body, 'v0')
7
+ end
8
+
9
+ test "a route with an override will match on the higher verison" do
10
+ get '/a_path_overridden_from_v1/somevalue/whats/anothervalue', {}, {'Accept' => 'version=2'}
11
+ assert_equal(response.body, 'v2')
12
+ end
13
+
14
+ test "a route with an override will match on the lower verison if specified" do
15
+ get '/a_path_overridden_from_v1/somevalue/whats/anothervalue', {}, {'Accept' => 'version=1'}
16
+ assert_equal(response.body, 'v1')
17
+ end
18
+
19
+ test "a route not defined on a specific verison will cascade to until a lower version match is found" do
20
+ get '/a_path_in_v2', {}, {'Accept' => 'version=3'}
21
+ assert_equal(response.body, 'v2')
22
+ end
23
+
24
+ test "a route defined in a higher version will cascade on lower versions" do
25
+ assert_raise ActionController::RoutingError do
26
+ get '/a_path_only_in_v3', {}, {'Accept' => 'version=2'}
27
+ end
28
+ end
29
+ end
metadata ADDED
@@ -0,0 +1,163 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: rails_versioned_routing
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Trek Glowacki
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2016-03-08 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rails
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: 4.0.0
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: 4.0.0
27
+ - !ruby/object:Gem::Dependency
28
+ name: sqlite3
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ description: "..."
42
+ email:
43
+ - trek.glowacki@gmail.com
44
+ executables: []
45
+ extensions: []
46
+ extra_rdoc_files: []
47
+ files:
48
+ - LICENSE
49
+ - Rakefile
50
+ - lib/rails_versioned_routing.rb
51
+ - lib/rails_versioned_routing/railtie.rb
52
+ - lib/tasks/rails_versioned_routing_tasks.rake
53
+ - test/dummy/README.rdoc
54
+ - test/dummy/Rakefile
55
+ - test/dummy/app/assets/javascripts/application.js
56
+ - test/dummy/app/assets/stylesheets/application.css
57
+ - test/dummy/app/controllers/application_controller.rb
58
+ - test/dummy/app/controllers/sample_controller.rb
59
+ - test/dummy/app/controllers/v1/sample_controller.rb
60
+ - test/dummy/app/controllers/v2/sample_controller.rb
61
+ - test/dummy/app/controllers/v3/sample_controller.rb
62
+ - test/dummy/app/helpers/application_helper.rb
63
+ - test/dummy/app/views/layouts/application.html.erb
64
+ - test/dummy/bin/bundle
65
+ - test/dummy/bin/rails
66
+ - test/dummy/bin/rake
67
+ - test/dummy/config.ru
68
+ - test/dummy/config/application.rb
69
+ - test/dummy/config/boot.rb
70
+ - test/dummy/config/database.yml
71
+ - test/dummy/config/environment.rb
72
+ - test/dummy/config/environments/development.rb
73
+ - test/dummy/config/environments/production.rb
74
+ - test/dummy/config/environments/test.rb
75
+ - test/dummy/config/initializers/backtrace_silencers.rb
76
+ - test/dummy/config/initializers/filter_parameter_logging.rb
77
+ - test/dummy/config/initializers/inflections.rb
78
+ - test/dummy/config/initializers/mime_types.rb
79
+ - test/dummy/config/initializers/secret_token.rb
80
+ - test/dummy/config/initializers/session_store.rb
81
+ - test/dummy/config/initializers/wrap_parameters.rb
82
+ - test/dummy/config/locales/en.yml
83
+ - test/dummy/config/routes.rb
84
+ - test/dummy/db/development.sqlite3
85
+ - test/dummy/db/schema.rb
86
+ - test/dummy/db/test.sqlite3
87
+ - test/dummy/log/development.log
88
+ - test/dummy/log/test.log
89
+ - test/dummy/public/404.html
90
+ - test/dummy/public/422.html
91
+ - test/dummy/public/500.html
92
+ - test/dummy/public/favicon.ico
93
+ - test/test_helper.rb
94
+ - test/versioned_presentation_test.rb
95
+ - test/versioned_routing_test.rb
96
+ homepage: https://github.com/trek/rails_versioned_routing
97
+ licenses: []
98
+ metadata: {}
99
+ post_install_message:
100
+ rdoc_options: []
101
+ require_paths:
102
+ - lib
103
+ required_ruby_version: !ruby/object:Gem::Requirement
104
+ requirements:
105
+ - - ">="
106
+ - !ruby/object:Gem::Version
107
+ version: '0'
108
+ required_rubygems_version: !ruby/object:Gem::Requirement
109
+ requirements:
110
+ - - ">="
111
+ - !ruby/object:Gem::Version
112
+ version: '0'
113
+ requirements: []
114
+ rubyforge_project:
115
+ rubygems_version: 2.4.6
116
+ signing_key:
117
+ specification_version: 4
118
+ summary: "..."
119
+ test_files:
120
+ - test/dummy/app/assets/javascripts/application.js
121
+ - test/dummy/app/assets/stylesheets/application.css
122
+ - test/dummy/app/controllers/application_controller.rb
123
+ - test/dummy/app/controllers/sample_controller.rb
124
+ - test/dummy/app/controllers/v1/sample_controller.rb
125
+ - test/dummy/app/controllers/v2/sample_controller.rb
126
+ - test/dummy/app/controllers/v3/sample_controller.rb
127
+ - test/dummy/app/helpers/application_helper.rb
128
+ - test/dummy/app/views/layouts/application.html.erb
129
+ - test/dummy/bin/bundle
130
+ - test/dummy/bin/rails
131
+ - test/dummy/bin/rake
132
+ - test/dummy/config/application.rb
133
+ - test/dummy/config/boot.rb
134
+ - test/dummy/config/database.yml
135
+ - test/dummy/config/environment.rb
136
+ - test/dummy/config/environments/development.rb
137
+ - test/dummy/config/environments/production.rb
138
+ - test/dummy/config/environments/test.rb
139
+ - test/dummy/config/initializers/backtrace_silencers.rb
140
+ - test/dummy/config/initializers/filter_parameter_logging.rb
141
+ - test/dummy/config/initializers/inflections.rb
142
+ - test/dummy/config/initializers/mime_types.rb
143
+ - test/dummy/config/initializers/secret_token.rb
144
+ - test/dummy/config/initializers/session_store.rb
145
+ - test/dummy/config/initializers/wrap_parameters.rb
146
+ - test/dummy/config/locales/en.yml
147
+ - test/dummy/config/routes.rb
148
+ - test/dummy/config.ru
149
+ - test/dummy/db/development.sqlite3
150
+ - test/dummy/db/schema.rb
151
+ - test/dummy/db/test.sqlite3
152
+ - test/dummy/log/development.log
153
+ - test/dummy/log/test.log
154
+ - test/dummy/public/404.html
155
+ - test/dummy/public/422.html
156
+ - test/dummy/public/500.html
157
+ - test/dummy/public/favicon.ico
158
+ - test/dummy/Rakefile
159
+ - test/dummy/README.rdoc
160
+ - test/test_helper.rb
161
+ - test/versioned_presentation_test.rb
162
+ - test/versioned_routing_test.rb
163
+ has_rdoc: