devise-better_routes 0.0.2 → 0.0.3
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.
- data/README.md +4 -0
- data/lib/devise/better_routes.rb +45 -5
- data/lib/devise/better_routes/version.rb +1 -1
- data/spec/devise/better_routes_spec.rb +247 -69
- data/spec/rails_app/app/models/user.rb +4 -1
- data/spec/rails_app/config/routes.rb +2 -0
- metadata +4 -6
- data/spec/rails_app/app/models/rails_programmer.rb +0 -3
data/README.md
CHANGED
data/lib/devise/better_routes.rb
CHANGED
@@ -13,11 +13,12 @@ module Devise
|
|
13
13
|
cancel_registration: 'cancel_#{current_resource_name}'
|
14
14
|
}
|
15
15
|
[:path, :url].each do |path_or_url|
|
16
|
+
# TODO: use real helper name
|
16
17
|
class_eval <<-URL_HELPERS, __FILE__, __LINE__ + 1
|
17
18
|
def registration_#{path_or_url}(resource_or_scope, *args)
|
18
19
|
scope = Devise::Mapping.find_scope!(resource_or_scope)
|
19
20
|
current_resource_name = _devise_path_name(scope, "current_\#{scope}")
|
20
|
-
if respond_to?(:controller_name) && controller_name == current_resource_name
|
21
|
+
if respond_to?(:controller_name) && controller_name == _devise_registration_controller(scope, current_resource_name)
|
21
22
|
send("\#{current_resource_name}_#{path_or_url}", *args)
|
22
23
|
else
|
23
24
|
send("\#{scope.to_s.pluralize}_#{path_or_url}", *args)
|
@@ -45,7 +46,17 @@ module Devise
|
|
45
46
|
def _devise_path_name(scope, name)
|
46
47
|
Devise.mappings[scope].path_names[name.to_sym]
|
47
48
|
end
|
48
|
-
|
49
|
+
def _devise_registration_controller(scope, name)
|
50
|
+
controllers = Devise.mappings[scope].controllers
|
51
|
+
if controllers.include?(name.to_sym)
|
52
|
+
controllers[name.to_sym]
|
53
|
+
elsif controllers.include?(:registrations)
|
54
|
+
controllers[:registrations]
|
55
|
+
else
|
56
|
+
name.pluralize
|
57
|
+
end
|
58
|
+
end
|
59
|
+
private :_devise_path_name, :_devise_registration_controller
|
49
60
|
end
|
50
61
|
end
|
51
62
|
|
@@ -60,11 +71,40 @@ module ActionDispatch
|
|
60
71
|
module Routing
|
61
72
|
class Mapper
|
62
73
|
protected
|
74
|
+
def devise_session(mapping, controllers)
|
75
|
+
current_resource_name = mapping.path_names["current_#{mapping.singular}".to_sym]
|
76
|
+
path, as, @scope[:path], @scope[:as] = @scope[:path], @scope[:as], nil, nil
|
77
|
+
resource current_resource_name, only: [] do
|
78
|
+
resource :session, only: [:create, :destroy], controller: controllers[:sessions]
|
79
|
+
resource :session, only: [], controller: controllers[:sessions], path: '' do
|
80
|
+
get :new, path: mapping.path_names[:'session/new'], as: 'new'
|
81
|
+
end
|
82
|
+
end
|
83
|
+
ensure
|
84
|
+
@scope[:path], @scope[:as] = path, as
|
85
|
+
end
|
86
|
+
|
63
87
|
def devise_registration(mapping, controllers)
|
64
88
|
path, as, @scope[:path], @scope[:as] = @scope[:path], @scope[:as], nil, nil
|
65
|
-
current_resource_name = mapping.path_names["current_#{mapping.
|
66
|
-
|
67
|
-
|
89
|
+
current_resource_name = mapping.path_names["current_#{mapping.name}".to_sym]
|
90
|
+
resources_controller_name =
|
91
|
+
if controllers.include?(mapping.path.to_sym)
|
92
|
+
controllers[mapping.path.to_sym]
|
93
|
+
elsif controllers.include?(:registrations)
|
94
|
+
controllers[:registrations]
|
95
|
+
else
|
96
|
+
nil
|
97
|
+
end
|
98
|
+
current_resource_controller_name =
|
99
|
+
if controllers.include?(current_resource_name.to_sym)
|
100
|
+
controllers[current_resource_name.to_sym]
|
101
|
+
elsif controllers.include?(:registrations)
|
102
|
+
controllers[:registrations]
|
103
|
+
else
|
104
|
+
nil
|
105
|
+
end
|
106
|
+
resources mapping.path, only: [:create, :new], controller: resources_controller_name
|
107
|
+
resource current_resource_name, only: [:edit, :update, :destroy], controller: current_resource_controller_name do
|
68
108
|
get :cancel
|
69
109
|
end
|
70
110
|
ensure
|
@@ -8,46 +8,146 @@ describe Devise::BetterRoutes do
|
|
8
8
|
context 'routing' do
|
9
9
|
include RSpec::Rails::RoutingExampleGroup
|
10
10
|
describe 'users' do
|
11
|
-
|
12
|
-
|
11
|
+
context 'registration' do
|
12
|
+
it 'routes to users#create' do
|
13
|
+
expect(post('/users')).to route_to('users#create')
|
14
|
+
end
|
15
|
+
it 'routes to users#new' do
|
16
|
+
expect(get('/users/new')).to route_to('users#new')
|
17
|
+
end
|
18
|
+
it 'routes to current_users#cancel' do
|
19
|
+
expect(get('/current_user/cancel')).to route_to('current_users#cancel')
|
20
|
+
end
|
21
|
+
it 'routes to current_users#edit' do
|
22
|
+
expect(get('/current_user/edit')).to route_to('current_users#edit')
|
23
|
+
end
|
24
|
+
it 'routes to current_users#update' do
|
25
|
+
expect(put('/current_user')).to route_to('current_users#update')
|
26
|
+
#expect(patch('/current_user')).to route_to('current_users#update')
|
27
|
+
end
|
28
|
+
it 'routes to current_users#destroy' do
|
29
|
+
expect(delete('/current_user')).to route_to('current_users#destroy')
|
30
|
+
end
|
13
31
|
end
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
#expect(patch('/current_user')).to route_to('current_users#update')
|
26
|
-
end
|
27
|
-
it 'routes to current_users#destroy' do
|
28
|
-
expect(delete('/current_user')).to route_to('current_users#destroy')
|
32
|
+
|
33
|
+
context 'session' do
|
34
|
+
it 'routes to devise/sessions#create' do
|
35
|
+
expect(post('/current_user/session')).to route_to('devise/sessions#create')
|
36
|
+
end
|
37
|
+
it 'routes to devise/sessions#destroy' do
|
38
|
+
expect(delete('/current_user/session')).to route_to('devise/sessions#destroy')
|
39
|
+
end
|
40
|
+
it 'routes to devise/sessions#new' do
|
41
|
+
expect(get('/current_user/session/new')).to route_to('devise/sessions#new')
|
42
|
+
end
|
29
43
|
end
|
30
44
|
end
|
31
45
|
|
32
46
|
describe 'rails_programmers' do
|
33
|
-
|
34
|
-
|
47
|
+
context 'registration' do
|
48
|
+
it 'routes to rails_programmers#create' do
|
49
|
+
expect(post('/rails_programmers')).to route_to('rails_programmers#create')
|
50
|
+
end
|
51
|
+
it 'routes to rails_programmers#new' do
|
52
|
+
expect(get('/rails_programmers/new')).to route_to('rails_programmers#new')
|
53
|
+
end
|
54
|
+
it 'routes to me#cancel' do
|
55
|
+
expect(get('/me/cancel')).to route_to('me#cancel')
|
56
|
+
end
|
57
|
+
it 'routes to me#edit' do
|
58
|
+
expect(get('/me/edit')).to route_to('me#edit')
|
59
|
+
end
|
60
|
+
it 'routes to me#update' do
|
61
|
+
expect(put('/me')).to route_to('me#update')
|
62
|
+
#expect(patch('/me')).to route_to('me#update')
|
63
|
+
end
|
64
|
+
it 'routes to me#destroy' do
|
65
|
+
expect(delete('/me')).to route_to('me#destroy')
|
66
|
+
end
|
35
67
|
end
|
36
|
-
|
37
|
-
|
68
|
+
|
69
|
+
context 'session' do
|
70
|
+
it 'routes to devise/sessions#create' do
|
71
|
+
expect(post('/me/session')).to route_to('devise/sessions#create')
|
72
|
+
end
|
73
|
+
it 'routes to devise/sessions#destroy' do
|
74
|
+
expect(delete('/me/session')).to route_to('devise/sessions#destroy')
|
75
|
+
end
|
76
|
+
it 'routes to devise/sessions#new' do
|
77
|
+
expect(get('/me/session/new')).to route_to('devise/sessions#new')
|
78
|
+
end
|
38
79
|
end
|
39
|
-
|
40
|
-
|
80
|
+
end
|
81
|
+
|
82
|
+
describe 'programmers' do
|
83
|
+
context 'registration' do
|
84
|
+
it 'routes to rails_programmers#create' do
|
85
|
+
expect(post('/programmers')).to route_to('rails_programmers#create')
|
86
|
+
end
|
87
|
+
it 'routes to rails_programmers#new' do
|
88
|
+
expect(get('/programmers/new')).to route_to('rails_programmers#new')
|
89
|
+
end
|
90
|
+
it 'routes to me#cancel' do
|
91
|
+
expect(get('/current_programmer/cancel')).to route_to('me#cancel')
|
92
|
+
end
|
93
|
+
it 'routes to me#edit' do
|
94
|
+
expect(get('/current_programmer/edit')).to route_to('me#edit')
|
95
|
+
end
|
96
|
+
it 'routes to me#update' do
|
97
|
+
expect(put('/current_programmer')).to route_to('me#update')
|
98
|
+
#expect(patch('/current_programmer')).to route_to('me#update')
|
99
|
+
end
|
100
|
+
it 'routes to me#destroy' do
|
101
|
+
expect(delete('/current_programmer')).to route_to('me#destroy')
|
102
|
+
end
|
41
103
|
end
|
42
|
-
|
43
|
-
|
104
|
+
|
105
|
+
context 'session' do
|
106
|
+
it 'routes to devise/sessions#create' do
|
107
|
+
expect(post('/current_programmer/session')).to route_to('devise/sessions#create')
|
108
|
+
end
|
109
|
+
it 'routes to devise/sessions#destroy' do
|
110
|
+
expect(delete('/current_programmer/session')).to route_to('devise/sessions#destroy')
|
111
|
+
end
|
112
|
+
it 'routes to devise/sessions#new' do
|
113
|
+
expect(get('/current_programmer/session/new')).to route_to('devise/sessions#new')
|
114
|
+
end
|
44
115
|
end
|
45
|
-
|
46
|
-
|
47
|
-
|
116
|
+
end
|
117
|
+
|
118
|
+
describe 'engineers' do
|
119
|
+
context 'registration' do
|
120
|
+
it 'routes to rails_programmers#create' do
|
121
|
+
expect(post('/engineers')).to route_to('rails_programmers#create')
|
122
|
+
end
|
123
|
+
it 'routes to rails_programmers#new' do
|
124
|
+
expect(get('/engineers/new')).to route_to('rails_programmers#new')
|
125
|
+
end
|
126
|
+
it 'routes to rails_programmers#cancel' do
|
127
|
+
expect(get('/current_engineer/cancel')).to route_to('rails_programmers#cancel')
|
128
|
+
end
|
129
|
+
it 'routes to rails_programmers#edit' do
|
130
|
+
expect(get('/current_engineer/edit')).to route_to('rails_programmers#edit')
|
131
|
+
end
|
132
|
+
it 'routes to rails_programmers#update' do
|
133
|
+
expect(put('/current_engineer')).to route_to('rails_programmers#update')
|
134
|
+
#expect(patch('/current_engineer')).to route_to('rails_programmers#update')
|
135
|
+
end
|
136
|
+
it 'routes to rails_programmers#destroy' do
|
137
|
+
expect(delete('/current_engineer')).to route_to('rails_programmers#destroy')
|
138
|
+
end
|
48
139
|
end
|
49
|
-
|
50
|
-
|
140
|
+
|
141
|
+
context 'session' do
|
142
|
+
it 'routes to devise/sessions#create' do
|
143
|
+
expect(post('/current_engineer/session')).to route_to('devise/sessions#create')
|
144
|
+
end
|
145
|
+
it 'routes to devise/sessions#destroy' do
|
146
|
+
expect(delete('/current_engineer/session')).to route_to('devise/sessions#destroy')
|
147
|
+
end
|
148
|
+
it 'routes to devise/sessions#new' do
|
149
|
+
expect(get('/current_engineer/session/new')).to route_to('devise/sessions#new')
|
150
|
+
end
|
51
151
|
end
|
52
152
|
end
|
53
153
|
end
|
@@ -56,52 +156,130 @@ describe Devise::BetterRoutes do
|
|
56
156
|
include Rails.application.routes.url_helpers
|
57
157
|
include Devise::Controllers::UrlHelpers
|
58
158
|
describe 'users' do
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
159
|
+
context 'registration' do
|
160
|
+
specify { expect(users_path).to eq '/users' }
|
161
|
+
specify { expect(new_user_path).to eq '/users/new' }
|
162
|
+
specify { expect(cancel_current_user_path).to eq '/current_user/cancel' }
|
163
|
+
specify { expect(edit_current_user_path).to eq '/current_user/edit' }
|
164
|
+
specify { expect(current_user_path).to eq '/current_user' }
|
165
|
+
it 'registration_path is delegated to users_path' do
|
166
|
+
expect(registration_path(:user)).to eq users_path
|
167
|
+
end
|
168
|
+
it 'registration_path is delegated to current_user_path on current_users' do
|
169
|
+
instance_eval { def controller_name; 'current_users' end }
|
170
|
+
expect(registration_path(:user)).to eq current_user_path
|
171
|
+
instance_eval { undef controller_name }
|
172
|
+
end
|
173
|
+
it 'new_registration_path is delegated to new_user_path' do
|
174
|
+
expect(new_registration_path(:user)).to eq new_user_path
|
175
|
+
end
|
176
|
+
it 'cancel_registration_path is delegated to cancel_current_user_path' do
|
177
|
+
expect(cancel_registration_path(:user)).to eq cancel_current_user_path
|
178
|
+
end
|
179
|
+
it 'edit_registration_path is delegated to edit_current_user_path' do
|
180
|
+
expect(edit_registration_path(:user)).to eq edit_current_user_path
|
181
|
+
end
|
66
182
|
end
|
67
|
-
|
68
|
-
|
69
|
-
expect(
|
70
|
-
|
183
|
+
|
184
|
+
context 'session' do
|
185
|
+
specify { expect(current_user_session_path).to eq '/current_user/session' }
|
186
|
+
specify { expect(new_current_user_session_path).to eq '/current_user/session/new' }
|
187
|
+
end
|
188
|
+
end
|
189
|
+
|
190
|
+
describe 'rails_programmers' do
|
191
|
+
context 'registration' do
|
192
|
+
specify { expect(rails_programmers_path).to eq '/rails_programmers' }
|
193
|
+
specify { expect(new_rails_programmer_path).to eq '/rails_programmers/new' }
|
194
|
+
specify { expect(cancel_me_path).to eq '/me/cancel' }
|
195
|
+
specify { expect(edit_me_path).to eq '/me/edit' }
|
196
|
+
specify { expect(me_path).to eq '/me' }
|
197
|
+
it 'registration_path is delegated to rails_programmers_path' do
|
198
|
+
expect(registration_path(:rails_programmer)).to eq rails_programmers_path
|
199
|
+
end
|
200
|
+
it 'registration_path is delegated to me_path on me' do
|
201
|
+
instance_eval { def controller_name; 'me' end }
|
202
|
+
expect(registration_path(:rails_programmer)).to eq me_path
|
203
|
+
instance_eval { undef controller_name }
|
204
|
+
end
|
205
|
+
it 'new_registration_path is delegated to new_rails_programmer_path' do
|
206
|
+
expect(new_registration_path(:rails_programmer)).to eq new_rails_programmer_path
|
207
|
+
end
|
208
|
+
it 'cancel_registration_path is delegated to cancel_me_path' do
|
209
|
+
expect(cancel_registration_path(:rails_programmer)).to eq cancel_me_path
|
210
|
+
end
|
211
|
+
it 'edit_registration_path is delegated to edit_me_path' do
|
212
|
+
expect(edit_registration_path(:rails_programmer)).to eq edit_me_path
|
213
|
+
end
|
71
214
|
end
|
72
|
-
|
73
|
-
|
215
|
+
|
216
|
+
context 'session' do
|
217
|
+
specify { expect(me_session_path).to eq '/me/session' }
|
218
|
+
specify { expect(new_me_session_path).to eq '/me/session/new' }
|
74
219
|
end
|
75
|
-
|
76
|
-
|
220
|
+
end
|
221
|
+
|
222
|
+
describe 'programmers' do
|
223
|
+
context 'registration' do
|
224
|
+
specify { expect(programmers_path).to eq '/programmers' }
|
225
|
+
specify { expect(new_programmer_path).to eq '/programmers/new' }
|
226
|
+
specify { expect(cancel_current_programmer_path).to eq '/current_programmer/cancel' }
|
227
|
+
specify { expect(edit_current_programmer_path).to eq '/current_programmer/edit' }
|
228
|
+
specify { expect(current_programmer_path).to eq '/current_programmer' }
|
229
|
+
it 'registration_path is delegated to programmers_path' do
|
230
|
+
expect(registration_path(:programmer)).to eq programmers_path
|
231
|
+
end
|
232
|
+
it 'registration_path is delegated to current_programmer_path on me' do
|
233
|
+
instance_eval { def controller_name; 'me' end }
|
234
|
+
expect(registration_path(:programmer)).to eq current_programmer_path
|
235
|
+
instance_eval { undef controller_name }
|
236
|
+
end
|
237
|
+
it 'new_registration_path is delegated to new_programmer_path' do
|
238
|
+
expect(new_registration_path(:programmer)).to eq new_programmer_path
|
239
|
+
end
|
240
|
+
it 'cancel_registration_path is delegated to cancel_current_programmer_path' do
|
241
|
+
expect(cancel_registration_path(:programmer)).to eq cancel_current_programmer_path
|
242
|
+
end
|
243
|
+
it 'edit_registration_path is delegated to edit_current_programmer_path' do
|
244
|
+
expect(edit_registration_path(:programmer)).to eq edit_current_programmer_path
|
245
|
+
end
|
77
246
|
end
|
78
|
-
|
79
|
-
|
247
|
+
|
248
|
+
context 'session' do
|
249
|
+
specify { expect(current_programmer_session_path).to eq '/current_programmer/session' }
|
250
|
+
specify { expect(new_current_programmer_session_path).to eq '/current_programmer/session/new' }
|
80
251
|
end
|
81
252
|
end
|
82
253
|
|
83
|
-
describe '
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
254
|
+
describe 'engineers' do
|
255
|
+
context 'registration' do
|
256
|
+
specify { expect(engineers_path).to eq '/engineers' }
|
257
|
+
specify { expect(new_engineer_path).to eq '/engineers/new' }
|
258
|
+
specify { expect(cancel_current_engineer_path).to eq '/current_engineer/cancel' }
|
259
|
+
specify { expect(edit_current_engineer_path).to eq '/current_engineer/edit' }
|
260
|
+
specify { expect(current_engineer_path).to eq '/current_engineer' }
|
261
|
+
it 'registration_path is delegated to engineers_path' do
|
262
|
+
expect(registration_path(:engineer)).to eq engineers_path
|
263
|
+
end
|
264
|
+
it 'registration_path is delegated to current_engineer_path on me' do
|
265
|
+
instance_eval { def controller_name; 'rails_programmers' end }
|
266
|
+
expect(registration_path(:engineer)).to eq current_engineer_path
|
267
|
+
instance_eval { undef controller_name }
|
268
|
+
end
|
269
|
+
it 'new_registration_path is delegated to new_engineer_path' do
|
270
|
+
expect(new_registration_path(:engineer)).to eq new_engineer_path
|
271
|
+
end
|
272
|
+
it 'cancel_registration_path is delegated to cancel_current_engineer_path' do
|
273
|
+
expect(cancel_registration_path(:engineer)).to eq cancel_current_engineer_path
|
274
|
+
end
|
275
|
+
it 'edit_registration_path is delegated to edit_current_engineer_path' do
|
276
|
+
expect(edit_registration_path(:engineer)).to eq edit_current_engineer_path
|
277
|
+
end
|
278
|
+
end
|
279
|
+
|
280
|
+
context 'session' do
|
281
|
+
specify { expect(current_engineer_session_path).to eq '/current_engineer/session' }
|
282
|
+
specify { expect(new_current_engineer_session_path).to eq '/current_engineer/session/new' }
|
105
283
|
end
|
106
284
|
end
|
107
285
|
end
|
@@ -1,4 +1,6 @@
|
|
1
1
|
RailsApp::Application.routes.draw do
|
2
2
|
devise_for :users
|
3
3
|
devise_for :rails_programmers, path_names: {current_rails_programmer: 'me'}
|
4
|
+
devise_for :programmers, controllers: {programmers: 'rails_programmers', current_programmer: 'me'}
|
5
|
+
devise_for :engineers, controllers: {registrations: 'rails_programmers'}
|
4
6
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: devise-better_routes
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-
|
12
|
+
date: 2013-07-12 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: devise
|
@@ -155,7 +155,6 @@ files:
|
|
155
155
|
- spec/rails_app/app/mailers/.keep
|
156
156
|
- spec/rails_app/app/models/.keep
|
157
157
|
- spec/rails_app/app/models/concerns/.keep
|
158
|
-
- spec/rails_app/app/models/rails_programmer.rb
|
159
158
|
- spec/rails_app/app/models/user.rb
|
160
159
|
- spec/rails_app/app/views/layouts/application.html.erb
|
161
160
|
- spec/rails_app/config.ru
|
@@ -199,7 +198,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
199
198
|
version: '0'
|
200
199
|
segments:
|
201
200
|
- 0
|
202
|
-
hash:
|
201
|
+
hash: -574275781529839639
|
203
202
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
204
203
|
none: false
|
205
204
|
requirements:
|
@@ -208,7 +207,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
208
207
|
version: '0'
|
209
208
|
segments:
|
210
209
|
- 0
|
211
|
-
hash:
|
210
|
+
hash: -574275781529839639
|
212
211
|
requirements: []
|
213
212
|
rubyforge_project:
|
214
213
|
rubygems_version: 1.8.24
|
@@ -231,7 +230,6 @@ test_files:
|
|
231
230
|
- spec/rails_app/app/mailers/.keep
|
232
231
|
- spec/rails_app/app/models/.keep
|
233
232
|
- spec/rails_app/app/models/concerns/.keep
|
234
|
-
- spec/rails_app/app/models/rails_programmer.rb
|
235
233
|
- spec/rails_app/app/models/user.rb
|
236
234
|
- spec/rails_app/app/views/layouts/application.html.erb
|
237
235
|
- spec/rails_app/config.ru
|