high_voltage 2.0.0 → 2.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +2 -12
- data/NEWS.md +6 -0
- data/README.md +64 -40
- data/app/controllers/concerns/high_voltage/static_page.rb +2 -1
- data/config/routes.rb +5 -0
- data/high_voltage.gemspec +1 -1
- data/lib/high_voltage.rb +5 -24
- data/lib/high_voltage/configuration.rb +33 -0
- data/lib/high_voltage/version.rb +1 -1
- data/spec/controllers/action_caching_controller_spec.rb +15 -11
- data/spec/controllers/page_caching_controller_spec.rb +19 -11
- data/spec/controllers/pages_controller_spec.rb +3 -13
- data/spec/dummy/public/pages/exists.html +0 -0
- data/spec/high_voltage/configuration_spec.rb +25 -0
- data/spec/requests/home_page_spec.rb +13 -0
- data/spec/routing/routes_spec.rb +46 -48
- data/spec/spec_helper.rb +11 -4
- data/spec/support/caching.rb +5 -2
- metadata +23 -16
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6132908ee3ceb8d0bd92c7904926e07aa25d33fa
|
4
|
+
data.tar.gz: 7380d36e82d395f54ba6a360ec6bf22d3a6d1f61
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 46412825479d480b85bb248ac95c08f8428b8b8e95f0c1365ff5430377d197cfcf9faf1a3ba83f94fccb34ee4bf5c9c19ee43d3d2b49a88ec53549096a148c9d
|
7
|
+
data.tar.gz: 012bbf16df86ae556196514c59c21b963d9300a82245663ec0ae2eee0c007e66ceac20e21dba0072d9abd3cfac81af36ee82dd109864883cca6af97f80b2a38a
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
high_voltage (2.
|
4
|
+
high_voltage (2.1.0)
|
5
5
|
|
6
6
|
GEM
|
7
7
|
remote: http://rubygems.org/
|
@@ -21,13 +21,6 @@ GEM
|
|
21
21
|
childprocess (0.3.9)
|
22
22
|
ffi (~> 1.0, >= 1.0.11)
|
23
23
|
coderay (1.0.9)
|
24
|
-
columnize (0.3.6)
|
25
|
-
debugger (1.6.1)
|
26
|
-
columnize (>= 0.3.1)
|
27
|
-
debugger-linecache (~> 1.2.0)
|
28
|
-
debugger-ruby_core_source (~> 1.2.3)
|
29
|
-
debugger-linecache (1.2.0)
|
30
|
-
debugger-ruby_core_source (1.2.3)
|
31
24
|
diff-lcs (1.1.3)
|
32
25
|
ffi (1.9.0)
|
33
26
|
method_source (0.8.1)
|
@@ -40,9 +33,6 @@ GEM
|
|
40
33
|
coderay (~> 1.0.5)
|
41
34
|
method_source (~> 0.8)
|
42
35
|
slop (~> 3.4)
|
43
|
-
pry-debugger (0.2.2)
|
44
|
-
debugger (~> 1.3)
|
45
|
-
pry (~> 0.9.10)
|
46
36
|
rack (1.5.2)
|
47
37
|
rack-test (0.6.2)
|
48
38
|
rack (>= 1.0)
|
@@ -76,5 +66,5 @@ DEPENDENCIES
|
|
76
66
|
appraisal
|
77
67
|
capybara (= 2.0.3)
|
78
68
|
high_voltage!
|
79
|
-
pry
|
69
|
+
pry
|
80
70
|
rspec-rails
|
data/NEWS.md
CHANGED
@@ -1,3 +1,9 @@
|
|
1
|
+
New for 2.1.0:
|
2
|
+
+ Extract configuration options into a module
|
3
|
+
+ Add ability to configure whether layout is cached with action_caching
|
4
|
+
+ Add ability to configure a `home_page` for root routing to High Voltage
|
5
|
+
+ Update README with new block style config
|
6
|
+
|
1
7
|
New for 2.0.0:
|
2
8
|
+ Extract PagesController into a module
|
3
9
|
+ Update README with module usage instructions
|
data/README.md
CHANGED
@@ -15,7 +15,7 @@ Yeah, like "About us", "Directions", marketing pages, etc.
|
|
15
15
|
Include in your Gemfile:
|
16
16
|
|
17
17
|
```ruby
|
18
|
-
gem 'high_voltage'
|
18
|
+
gem 'high_voltage', '~> 2.1.0'
|
19
19
|
```
|
20
20
|
|
21
21
|
For Rails versions prior to 3.0, use the 0.9.2 tag of high_voltage:
|
@@ -43,7 +43,9 @@ link_to 'Q4 Reports', page_path('about/corporate/policies/HR/en_US/biz/sales/Qua
|
|
43
43
|
|
44
44
|
Bam.
|
45
45
|
|
46
|
-
##
|
46
|
+
## Configuration
|
47
|
+
|
48
|
+
#### Routing overview
|
47
49
|
|
48
50
|
By default, the static page routes will be like /pages/:id (where :id is the view filename).
|
49
51
|
|
@@ -55,39 +57,28 @@ get 'pages/home' => 'high_voltage/pages#show', id: 'home'
|
|
55
57
|
|
56
58
|
In that case, you'd need an `app/views/pages/home.html.erb` file.
|
57
59
|
|
58
|
-
Generally speaking, you need to route to the 'show' action with an
|
60
|
+
Generally speaking, you need to route to the 'show' action with an `:id` param of the view filename.
|
59
61
|
|
60
|
-
High Voltage will generate a named route method of `page_path
|
61
|
-
|
62
|
-
|
63
|
-
route generated by High Voltage itself.
|
62
|
+
High Voltage will generate a named route method of `page_path`. If you want to generate
|
63
|
+
your own named route (with the :as routing option), make sure not to use `:page`
|
64
|
+
as it will conflict with the High Voltage named route.
|
64
65
|
|
65
66
|
#### Specifying a root path
|
66
67
|
|
67
|
-
You can
|
68
|
-
|
69
|
-
```ruby
|
70
|
-
root :to => 'high_voltage/pages#show', id: 'home'
|
71
|
-
```
|
72
|
-
|
73
|
-
Which will render a homepage from app/views/pages/home.html.erb
|
74
|
-
|
75
|
-
#### Page titles and meta-data
|
76
|
-
|
77
|
-
We suggest using `content_for` and `yield` for setting custom page titles and
|
78
|
-
meta-data on High Voltage pages.
|
68
|
+
You can configure the root route to a High Voltage page like this:
|
79
69
|
|
80
70
|
```ruby
|
81
|
-
#
|
82
|
-
|
71
|
+
# config/initializers/high_voltage.rb
|
72
|
+
HighVoltage.configure do |config|
|
73
|
+
config.home_page = 'home'
|
74
|
+
end
|
83
75
|
```
|
84
76
|
|
85
|
-
|
77
|
+
Which will render the page from `app/views/pages/home.html.erb` when the '/'
|
78
|
+
route of the site is accessed.
|
86
79
|
|
87
|
-
|
88
|
-
|
89
|
-
<title><%= yield(:page_title) %></title>
|
90
|
-
```
|
80
|
+
Note: High Voltage also creates a search engine friendly 301 redirect. Any attempt to
|
81
|
+
access the path '/home' will be redirected to '/'.
|
91
82
|
|
92
83
|
#### Top-level routes
|
93
84
|
|
@@ -102,23 +93,42 @@ Would look for corresponding files:
|
|
102
93
|
app/views/pages/about.html.erb
|
103
94
|
app/views/pages/company.html.erb
|
104
95
|
|
105
|
-
This is accomplished by
|
96
|
+
This is accomplished by setting the `route_drawer` to `HighVoltage::RouteDrawers::Root`
|
106
97
|
|
107
98
|
```ruby
|
108
99
|
# config/initializers/high_voltage.rb
|
109
|
-
HighVoltage.
|
100
|
+
HighVoltage.configure do |config|
|
101
|
+
config.route_drawer = HighVoltage::RouteDrawers::Root
|
102
|
+
end
|
110
103
|
```
|
111
104
|
|
112
105
|
#### Disabling routes
|
113
106
|
|
114
|
-
The default routes can be completely removed by
|
115
|
-
to `false`:
|
107
|
+
The default routes can be completely removed by setting the `routes` to `false`:
|
116
108
|
|
117
109
|
```ruby
|
118
110
|
# config/initializers/high_voltage.rb
|
119
|
-
HighVoltage.
|
111
|
+
HighVoltage.configure do |config|
|
112
|
+
config.routes = false
|
113
|
+
end
|
114
|
+
```
|
115
|
+
|
116
|
+
#### Page titles and meta-data
|
117
|
+
|
118
|
+
We suggest using `content_for` and `yield` for setting custom page titles and
|
119
|
+
meta-data on High Voltage pages.
|
120
|
+
|
121
|
+
```ruby
|
122
|
+
# app/views/pages/about.html.erb
|
123
|
+
<%= content_for :page_title, 'About Us - Custom page title' %>
|
120
124
|
```
|
121
125
|
|
126
|
+
Then print the contents of `:title` into the layout:
|
127
|
+
|
128
|
+
```ruby
|
129
|
+
# app/views/layouts/application.html.erb
|
130
|
+
<title><%= yield(:page_title) %></title>
|
131
|
+
```
|
122
132
|
#### Content path
|
123
133
|
|
124
134
|
High Voltage uses a default path and folder of 'pages', i.e. 'url.com/pages/contact',
|
@@ -128,20 +138,32 @@ You can change this in an initializer:
|
|
128
138
|
|
129
139
|
```ruby
|
130
140
|
# config/initializers/high_voltage.rb
|
131
|
-
HighVoltage.
|
141
|
+
HighVoltage.configure do |config|
|
142
|
+
config.content_path = 'site/'
|
143
|
+
end
|
132
144
|
```
|
133
145
|
|
134
146
|
#### Caching
|
135
147
|
|
136
148
|
High Voltage supports both [page](http://guides.rubyonrails.org/caching_with_rails.html#page-caching) and [action caching](http://guides.rubyonrails.org/caching_with_rails.html#action-caching).
|
137
149
|
|
138
|
-
To enable
|
150
|
+
To enable action-caching you can add the following to your initializer:
|
139
151
|
|
140
152
|
```ruby
|
141
153
|
# config/initializers/high_voltage.rb
|
142
|
-
|
143
|
-
|
144
|
-
|
154
|
+
HighVolgate.configure do |config|
|
155
|
+
config.action_caching = true
|
156
|
+
config.action_caching_layout = false # optionally do not cache layout. default is true.
|
157
|
+
end
|
158
|
+
```
|
159
|
+
|
160
|
+
To enable page-caching:
|
161
|
+
|
162
|
+
```ruby
|
163
|
+
# config/initializers/high_voltage.rb
|
164
|
+
HighVolgate.configure do |config|
|
165
|
+
config.page_caching = true
|
166
|
+
end
|
145
167
|
```
|
146
168
|
|
147
169
|
High Voltage will use your default cache store to store action caches.
|
@@ -170,17 +192,19 @@ Disable the default routes:
|
|
170
192
|
|
171
193
|
```ruby
|
172
194
|
# config/initializers/high_voltage.rb
|
173
|
-
HighVoltage.
|
195
|
+
HighVoltage.configure do |config|
|
196
|
+
config.routes = false
|
197
|
+
end
|
174
198
|
```
|
175
199
|
|
176
200
|
Define a route for the new `PagesController`:
|
177
201
|
|
178
202
|
```ruby
|
179
203
|
# config/routes.rb
|
180
|
-
get "/pages/*id" => 'pages#show', :
|
204
|
+
get "/pages/*id" => 'pages#show', as: :page, format: false
|
181
205
|
|
182
206
|
# if routing the root path, update for your controller
|
183
|
-
root :
|
207
|
+
root to: 'pages#show', id: 'home'
|
184
208
|
```
|
185
209
|
|
186
210
|
Then modify new `PagesController` to include the High Voltage static page concern:
|
@@ -253,7 +277,7 @@ describe PagesController, '#show' do
|
|
253
277
|
%w(earn_money screencast about contact).each do |page|
|
254
278
|
context 'on GET to /pages/#{page}' do
|
255
279
|
before do
|
256
|
-
get :show, :
|
280
|
+
get :show, id: page
|
257
281
|
end
|
258
282
|
|
259
283
|
it { should respond_with(:success) }
|
@@ -13,7 +13,8 @@ module HighVoltage::StaticPage
|
|
13
13
|
end
|
14
14
|
|
15
15
|
if respond_to?(:caches_action)
|
16
|
-
caches_action :show,
|
16
|
+
caches_action :show, layout: HighVoltage.action_caching_layout,
|
17
|
+
if: -> { HighVoltage.action_caching }
|
17
18
|
end
|
18
19
|
|
19
20
|
if respond_to?(:caches_page)
|
data/config/routes.rb
CHANGED
data/high_voltage.gemspec
CHANGED
@@ -19,6 +19,6 @@ Gem::Specification.new do |s|
|
|
19
19
|
s.add_development_dependency("activesupport", ">= 3.1.0")
|
20
20
|
s.add_development_dependency("appraisal")
|
21
21
|
s.add_development_dependency("capybara", "= 2.0.3")
|
22
|
-
s.add_development_dependency("pry
|
22
|
+
s.add_development_dependency("pry")
|
23
23
|
s.add_development_dependency("rspec-rails")
|
24
24
|
end
|
data/lib/high_voltage.rb
CHANGED
@@ -1,32 +1,13 @@
|
|
1
|
-
require '
|
1
|
+
require 'active_support/core_ext/module/attribute_accessors'
|
2
|
+
|
3
|
+
require 'high_voltage/configuration'
|
2
4
|
require 'high_voltage/constraints/root_route'
|
3
5
|
require 'high_voltage/page_finder'
|
4
6
|
require 'high_voltage/route_drawers/default'
|
5
7
|
require 'high_voltage/route_drawers/root'
|
6
|
-
require '
|
8
|
+
require 'high_voltage/version'
|
7
9
|
|
8
10
|
module HighVoltage
|
9
|
-
|
10
|
-
@@layout = 'application'
|
11
|
-
|
12
|
-
mattr_accessor :content_path
|
13
|
-
@@content_path = 'pages/'
|
14
|
-
|
15
|
-
mattr_accessor :route_drawer
|
16
|
-
@@route_drawer = HighVoltage::RouteDrawers::Default
|
17
|
-
|
18
|
-
mattr_accessor :routes
|
19
|
-
@@routes = true
|
20
|
-
|
21
|
-
mattr_accessor :action_caching
|
22
|
-
@@action_caching = false
|
23
|
-
|
24
|
-
mattr_accessor :page_caching
|
25
|
-
@@page_caching = false
|
26
|
-
|
27
|
-
def self.setup
|
28
|
-
yield self
|
29
|
-
end
|
30
|
-
|
11
|
+
extend Configuration
|
31
12
|
require 'high_voltage/engine' if defined?(Rails)
|
32
13
|
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
module HighVoltage
|
2
|
+
module Configuration
|
3
|
+
attr_accessor(
|
4
|
+
:action_caching,
|
5
|
+
:action_caching_layout,
|
6
|
+
:content_path,
|
7
|
+
:home_page,
|
8
|
+
:layout,
|
9
|
+
:page_caching,
|
10
|
+
:route_drawer,
|
11
|
+
:routes,
|
12
|
+
)
|
13
|
+
|
14
|
+
def configure
|
15
|
+
yield self
|
16
|
+
end
|
17
|
+
|
18
|
+
def self.extended(base)
|
19
|
+
base.set_default_configuration
|
20
|
+
end
|
21
|
+
|
22
|
+
def set_default_configuration
|
23
|
+
self.action_caching = false
|
24
|
+
self.action_caching_layout = true
|
25
|
+
self.content_path = 'pages/'
|
26
|
+
self.home_page = nil
|
27
|
+
self.layout = 'application'
|
28
|
+
self.page_caching = false
|
29
|
+
self.route_drawer = HighVoltage::RouteDrawers::Default
|
30
|
+
self.routes = true
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
data/lib/high_voltage/version.rb
CHANGED
@@ -1,23 +1,27 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
describe HighVoltage::PagesController, 'action_caching' do
|
4
|
-
|
5
|
-
|
3
|
+
describe HighVoltage::PagesController, '#action_caching' do
|
4
|
+
let(:page_name) { :exists }
|
5
|
+
|
6
|
+
context 'action_caching set to true' do
|
7
|
+
it 'caches the action', enable_caching: true do
|
6
8
|
HighVoltage.action_caching = true
|
7
9
|
concern_reload
|
8
|
-
|
9
|
-
|
10
|
+
|
11
|
+
expect { get :show, id: page_name }.to change { action_cache_exists? }
|
12
|
+
end
|
10
13
|
end
|
11
14
|
|
12
|
-
|
13
|
-
|
15
|
+
context 'action_caching set to false' do
|
16
|
+
it 'does not cache the action', enable_caching: true do
|
14
17
|
HighVoltage.action_caching = false
|
15
18
|
concern_reload
|
16
|
-
|
17
|
-
|
19
|
+
|
20
|
+
expect { get :show, id: page_name }.to_not change { action_cache_exists? }
|
21
|
+
end
|
18
22
|
end
|
19
23
|
|
20
|
-
def
|
21
|
-
ActionController::Base.cache_store.exist?("views/test.host#{page_path(
|
24
|
+
def action_cache_exists?
|
25
|
+
ActionController::Base.cache_store.exist?("views/test.host#{page_path(page_name)}")
|
22
26
|
end
|
23
27
|
end
|
@@ -1,20 +1,28 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
describe HighVoltage::PagesController, '
|
4
|
-
|
5
|
-
controller.should_receive(:cache_page).at_least(:once)
|
3
|
+
describe HighVoltage::PagesController, '#cache_page' do
|
4
|
+
let(:page_name) { :exists }
|
6
5
|
|
7
|
-
|
8
|
-
|
9
|
-
|
6
|
+
context 'page_caching set to true' do
|
7
|
+
it 'caches the page', enable_caching: true do
|
8
|
+
HighVoltage.page_caching = true
|
9
|
+
concern_reload
|
10
|
+
|
11
|
+
controller.should_receive(:cache_page).at_least(:once)
|
12
|
+
|
13
|
+
get :show, id: page_name
|
14
|
+
end
|
10
15
|
end
|
11
16
|
|
12
|
-
|
13
|
-
|
17
|
+
context 'page_caching set to false' do
|
18
|
+
it 'does not cache the page', enable_caching: true do
|
19
|
+
HighVoltage.page_caching = false
|
20
|
+
concern_reload
|
21
|
+
|
22
|
+
controller.should_receive(:cache_page).never
|
14
23
|
|
15
|
-
|
16
|
-
|
17
|
-
get :show, id: :exists
|
24
|
+
get :show, id: page_name
|
25
|
+
end
|
18
26
|
end
|
19
27
|
end
|
20
28
|
|
@@ -1,4 +1,3 @@
|
|
1
|
-
# encoding: UTF-8
|
2
1
|
require 'spec_helper'
|
3
2
|
|
4
3
|
describe HighVoltage::PagesController do
|
@@ -50,15 +49,10 @@ describe HighVoltage::PagesController do
|
|
50
49
|
end
|
51
50
|
|
52
51
|
context 'using custom layout' do
|
53
|
-
before(:
|
54
|
-
@original_layout = HighVoltage.layout
|
52
|
+
before(:each) do
|
55
53
|
HighVoltage.layout = 'alternate'
|
56
54
|
end
|
57
55
|
|
58
|
-
after(:all) do
|
59
|
-
HighVoltage.layout = @original_layout
|
60
|
-
end
|
61
|
-
|
62
56
|
describe 'on GET to /pages/exists' do
|
63
57
|
before { get :show, :id => 'exists' }
|
64
58
|
|
@@ -70,13 +64,9 @@ describe HighVoltage::PagesController do
|
|
70
64
|
end
|
71
65
|
|
72
66
|
context 'using custom content path' do
|
73
|
-
before(:
|
74
|
-
@original_content_path = HighVoltage.content_path
|
67
|
+
before(:each) do
|
75
68
|
HighVoltage.content_path = 'other_pages/'
|
76
|
-
|
77
|
-
|
78
|
-
after(:all) do
|
79
|
-
HighVoltage.content_path = @original_content_path
|
69
|
+
Rails.application.reload_routes!
|
80
70
|
end
|
81
71
|
|
82
72
|
describe 'on GET to /other_pages/also_exists' do
|
File without changes
|
@@ -0,0 +1,25 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe HighVoltage::Configuration do
|
4
|
+
let(:config_value) { 'fake_config_value' }
|
5
|
+
|
6
|
+
before(:each) do
|
7
|
+
HighVoltage.configure do |config|
|
8
|
+
config.action_caching = config_value
|
9
|
+
config.action_caching_layout = config_value
|
10
|
+
config.content_path = config_value
|
11
|
+
config.layout = config_value
|
12
|
+
config.page_caching = config_value
|
13
|
+
config.route_drawer = config_value
|
14
|
+
config.routes = config_value
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
it { expect(HighVoltage.action_caching).to eq config_value }
|
19
|
+
it { expect(HighVoltage.action_caching_layout).to eq config_value }
|
20
|
+
it { expect(HighVoltage.content_path).to eq config_value }
|
21
|
+
it { expect(HighVoltage.layout).to eq config_value }
|
22
|
+
it { expect(HighVoltage.page_caching).to eq config_value }
|
23
|
+
it { expect(HighVoltage.route_drawer).to eq config_value }
|
24
|
+
it { expect(HighVoltage.routes).to eq config_value }
|
25
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe 'Home page route' do
|
4
|
+
before(:each) do
|
5
|
+
HighVoltage.home_page = 'home'
|
6
|
+
Rails.application.reload_routes!
|
7
|
+
end
|
8
|
+
|
9
|
+
it 'redirects the duplicate content to root' do
|
10
|
+
get '/home'
|
11
|
+
expect(response).to redirect_to('/')
|
12
|
+
end
|
13
|
+
end
|
data/spec/routing/routes_spec.rb
CHANGED
@@ -1,42 +1,38 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe 'routes' do
|
4
|
-
context '
|
5
|
-
it '
|
4
|
+
context 'default configuration' do
|
5
|
+
it 'generates a route' do
|
6
6
|
page_path('one').should eq '/pages/one'
|
7
7
|
end
|
8
8
|
|
9
|
-
it '
|
10
|
-
page_path('one').should eq '/pages/one'
|
11
|
-
end
|
12
|
-
|
13
|
-
it 'should generate nested route with string' do
|
9
|
+
it 'generates a nested route' do
|
14
10
|
page_path('one/two').should eq '/pages/one/two'
|
15
11
|
end
|
16
12
|
|
17
|
-
it '
|
13
|
+
it 'recognizes a route' do
|
18
14
|
assert_recognizes(
|
19
15
|
{
|
20
16
|
:controller => 'high_voltage/pages',
|
21
17
|
:action => 'show',
|
22
|
-
:id => 'one
|
18
|
+
:id => 'one'
|
23
19
|
},
|
24
|
-
'/pages/one
|
20
|
+
'/pages/one'
|
25
21
|
)
|
26
22
|
end
|
27
23
|
|
28
|
-
it '
|
24
|
+
it 'recognizes a nested route' do
|
29
25
|
assert_recognizes(
|
30
26
|
{
|
31
27
|
:controller => 'high_voltage/pages',
|
32
28
|
:action => 'show',
|
33
|
-
:id => 'one'
|
29
|
+
:id => 'one/two'
|
34
30
|
},
|
35
|
-
'/pages/one'
|
31
|
+
'/pages/one/two'
|
36
32
|
)
|
37
33
|
end
|
38
34
|
|
39
|
-
it '
|
35
|
+
it 'recognizes a route with dots' do
|
40
36
|
assert_recognizes(
|
41
37
|
{
|
42
38
|
:controller => 'high_voltage/pages',
|
@@ -49,69 +45,57 @@ describe 'routes' do
|
|
49
45
|
end
|
50
46
|
|
51
47
|
context 'using top-level routing configuration' do
|
52
|
-
|
53
|
-
cached_high_voltage_route_drawer = HighVoltage.route_drawer
|
48
|
+
before(:each) do
|
54
49
|
HighVoltage.route_drawer = HighVoltage::RouteDrawers::Root
|
55
50
|
Rails.application.reload_routes!
|
56
|
-
|
57
|
-
example.run
|
58
|
-
|
59
|
-
HighVoltage.route_drawer = cached_high_voltage_route_drawer
|
60
|
-
Rails.application.reload_routes!
|
61
51
|
end
|
62
52
|
|
63
|
-
it '
|
53
|
+
it 'generates a route' do
|
64
54
|
page_path('one').should eq '/one'
|
65
55
|
end
|
66
56
|
|
67
|
-
it '
|
57
|
+
it 'generates a nested route' do
|
68
58
|
page_path('one/two').should eq '/one/two'
|
69
59
|
end
|
70
60
|
end
|
71
61
|
|
72
|
-
context '
|
73
|
-
|
74
|
-
cached_high_voltage_content_path = HighVoltage.content_path
|
62
|
+
context 'custom content path' do
|
63
|
+
before(:each) do
|
75
64
|
HighVoltage.content_path = 'other_pages/'
|
76
65
|
Rails.application.reload_routes!
|
77
|
-
|
78
|
-
example.run
|
79
|
-
|
80
|
-
HighVoltage.content_path = cached_high_voltage_content_path
|
81
|
-
Rails.application.reload_routes!
|
82
66
|
end
|
83
67
|
|
84
|
-
it '
|
68
|
+
it 'generates a route' do
|
85
69
|
page_path('one').should eq '/other_pages/one'
|
86
70
|
end
|
87
71
|
|
88
|
-
it '
|
72
|
+
it 'generates a nested route' do
|
89
73
|
page_path('one/two').should eq '/other_pages/one/two'
|
90
74
|
end
|
91
75
|
|
92
|
-
it '
|
76
|
+
it 'recognizes a route' do
|
93
77
|
assert_recognizes(
|
94
78
|
{
|
95
79
|
:controller => 'high_voltage/pages',
|
96
80
|
:action => 'show',
|
97
|
-
:id => 'one
|
81
|
+
:id => 'one'
|
98
82
|
},
|
99
|
-
'/other_pages/one
|
83
|
+
'/other_pages/one'
|
100
84
|
)
|
101
85
|
end
|
102
86
|
|
103
|
-
it '
|
87
|
+
it 'recognizes a nested route' do
|
104
88
|
assert_recognizes(
|
105
89
|
{
|
106
90
|
:controller => 'high_voltage/pages',
|
107
91
|
:action => 'show',
|
108
|
-
:id => 'one'
|
92
|
+
:id => 'one/two'
|
109
93
|
},
|
110
|
-
'/other_pages/one'
|
94
|
+
'/other_pages/one/two'
|
111
95
|
)
|
112
96
|
end
|
113
97
|
|
114
|
-
it '
|
98
|
+
it 'recognizes a route with dots' do
|
115
99
|
assert_recognizes(
|
116
100
|
{
|
117
101
|
:controller => 'high_voltage/pages',
|
@@ -123,19 +107,33 @@ describe 'routes' do
|
|
123
107
|
end
|
124
108
|
end
|
125
109
|
|
126
|
-
context '
|
127
|
-
|
128
|
-
|
129
|
-
HighVoltage.routes = false
|
110
|
+
context 'home page route' do
|
111
|
+
it 'recognizes the root route' do
|
112
|
+
HighVoltage.home_page = 'home'
|
130
113
|
Rails.application.reload_routes!
|
131
114
|
|
132
|
-
|
115
|
+
assert_recognizes(
|
116
|
+
{
|
117
|
+
:controller => 'high_voltage/pages',
|
118
|
+
:action => 'show',
|
119
|
+
:id => 'home'
|
120
|
+
},
|
121
|
+
'/'
|
122
|
+
)
|
123
|
+
end
|
124
|
+
end
|
133
125
|
|
134
|
-
|
135
|
-
|
126
|
+
context 'no home page route' do
|
127
|
+
it 'does generate a home page route' do
|
128
|
+
{ :get => '/' }.should_not be_routable
|
136
129
|
end
|
130
|
+
end
|
131
|
+
|
132
|
+
context 'disabled routes' do
|
133
|
+
it 'does not recognize routes' do
|
134
|
+
HighVoltage.routes = false
|
135
|
+
Rails.application.reload_routes!
|
137
136
|
|
138
|
-
it 'should not recognize routes' do
|
139
137
|
{ :get => '/pages/one/two' }.should_not be_routable
|
140
138
|
end
|
141
139
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -1,19 +1,26 @@
|
|
1
1
|
ENV['RAILS_ENV'] = 'test'
|
2
2
|
|
3
|
-
require File.expand_path(
|
3
|
+
require File.expand_path('../dummy/config/environment.rb', __FILE__)
|
4
|
+
|
5
|
+
require 'capybara/rails'
|
4
6
|
require 'pry'
|
5
7
|
require 'rails/test_help'
|
8
|
+
require 'rspec/expectations'
|
6
9
|
require 'rspec/rails'
|
7
|
-
require 'capybara/rails'
|
8
10
|
|
9
11
|
Rails.backtrace_cleaner.remove_silencers!
|
10
12
|
Capybara.default_driver = :rack_test
|
11
13
|
Capybara.default_selector = :css
|
12
14
|
|
13
|
-
Dir[File.dirname(__FILE__) + '/support/**/*.rb'].each {|
|
15
|
+
Dir[File.dirname(__FILE__) + '/support/**/*.rb'].each { |file| require file }
|
14
16
|
|
15
17
|
RSpec.configure do |config|
|
16
|
-
|
18
|
+
config.after(:each) do
|
19
|
+
HighVoltage.set_default_configuration
|
20
|
+
Rails.application.reload_routes!
|
21
|
+
end
|
22
|
+
|
17
23
|
config.include RSpec::Matchers
|
18
24
|
config.mock_with :rspec
|
25
|
+
config.order = 'random'
|
19
26
|
end
|
data/spec/support/caching.rb
CHANGED
@@ -1,12 +1,15 @@
|
|
1
1
|
RSpec.configure do |config|
|
2
2
|
config.around(:each, enable_caching: true) do |example|
|
3
|
+
previous_cache_store = ActionController::Base.cache_store
|
4
|
+
|
3
5
|
ActionController::Base.perform_caching = true
|
4
|
-
old_cache_store = ActionController::Base.cache_store
|
5
6
|
ActionController::Base.cache_store = :memory_store
|
7
|
+
ActionController::Base.cache_store.clear
|
6
8
|
|
7
9
|
example.run
|
8
10
|
|
9
|
-
ActionController::Base.cache_store
|
11
|
+
ActionController::Base.cache_store.clear
|
12
|
+
ActionController::Base.cache_store = previous_cache_store
|
10
13
|
ActionController::Base.perform_caching = false
|
11
14
|
end
|
12
15
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: high_voltage
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Matt Jankowski
|
@@ -16,34 +16,34 @@ authors:
|
|
16
16
|
autorequire:
|
17
17
|
bindir: bin
|
18
18
|
cert_chain: []
|
19
|
-
date: 2013-
|
19
|
+
date: 2013-12-30 00:00:00.000000000 Z
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
22
22
|
name: activesupport
|
23
23
|
requirement: !ruby/object:Gem::Requirement
|
24
24
|
requirements:
|
25
|
-
- -
|
25
|
+
- - ">="
|
26
26
|
- !ruby/object:Gem::Version
|
27
27
|
version: 3.1.0
|
28
28
|
type: :development
|
29
29
|
prerelease: false
|
30
30
|
version_requirements: !ruby/object:Gem::Requirement
|
31
31
|
requirements:
|
32
|
-
- -
|
32
|
+
- - ">="
|
33
33
|
- !ruby/object:Gem::Version
|
34
34
|
version: 3.1.0
|
35
35
|
- !ruby/object:Gem::Dependency
|
36
36
|
name: appraisal
|
37
37
|
requirement: !ruby/object:Gem::Requirement
|
38
38
|
requirements:
|
39
|
-
- -
|
39
|
+
- - ">="
|
40
40
|
- !ruby/object:Gem::Version
|
41
41
|
version: '0'
|
42
42
|
type: :development
|
43
43
|
prerelease: false
|
44
44
|
version_requirements: !ruby/object:Gem::Requirement
|
45
45
|
requirements:
|
46
|
-
- -
|
46
|
+
- - ">="
|
47
47
|
- !ruby/object:Gem::Version
|
48
48
|
version: '0'
|
49
49
|
- !ruby/object:Gem::Dependency
|
@@ -61,31 +61,31 @@ dependencies:
|
|
61
61
|
- !ruby/object:Gem::Version
|
62
62
|
version: 2.0.3
|
63
63
|
- !ruby/object:Gem::Dependency
|
64
|
-
name: pry
|
64
|
+
name: pry
|
65
65
|
requirement: !ruby/object:Gem::Requirement
|
66
66
|
requirements:
|
67
|
-
- -
|
67
|
+
- - ">="
|
68
68
|
- !ruby/object:Gem::Version
|
69
69
|
version: '0'
|
70
70
|
type: :development
|
71
71
|
prerelease: false
|
72
72
|
version_requirements: !ruby/object:Gem::Requirement
|
73
73
|
requirements:
|
74
|
-
- -
|
74
|
+
- - ">="
|
75
75
|
- !ruby/object:Gem::Version
|
76
76
|
version: '0'
|
77
77
|
- !ruby/object:Gem::Dependency
|
78
78
|
name: rspec-rails
|
79
79
|
requirement: !ruby/object:Gem::Requirement
|
80
80
|
requirements:
|
81
|
-
- -
|
81
|
+
- - ">="
|
82
82
|
- !ruby/object:Gem::Version
|
83
83
|
version: '0'
|
84
84
|
type: :development
|
85
85
|
prerelease: false
|
86
86
|
version_requirements: !ruby/object:Gem::Requirement
|
87
87
|
requirements:
|
88
|
-
- -
|
88
|
+
- - ">="
|
89
89
|
- !ruby/object:Gem::Version
|
90
90
|
version: '0'
|
91
91
|
description: Fire in the disco. Fire in the ... taco bell.
|
@@ -95,8 +95,8 @@ executables: []
|
|
95
95
|
extensions: []
|
96
96
|
extra_rdoc_files: []
|
97
97
|
files:
|
98
|
-
- .gitignore
|
99
|
-
- .travis.yml
|
98
|
+
- ".gitignore"
|
99
|
+
- ".travis.yml"
|
100
100
|
- Appraisals
|
101
101
|
- CONTRIBUTING.md
|
102
102
|
- Gemfile
|
@@ -110,6 +110,7 @@ files:
|
|
110
110
|
- config/routes.rb
|
111
111
|
- high_voltage.gemspec
|
112
112
|
- lib/high_voltage.rb
|
113
|
+
- lib/high_voltage/configuration.rb
|
113
114
|
- lib/high_voltage/constraints/root_route.rb
|
114
115
|
- lib/high_voltage/engine.rb
|
115
116
|
- lib/high_voltage/page_finder.rb
|
@@ -165,12 +166,15 @@ files:
|
|
165
166
|
- spec/dummy/public/javascripts/effects.js
|
166
167
|
- spec/dummy/public/javascripts/prototype.js
|
167
168
|
- spec/dummy/public/javascripts/rails.js
|
169
|
+
- spec/dummy/public/pages/exists.html
|
168
170
|
- spec/dummy/public/stylesheets/.gitkeep
|
169
171
|
- spec/dummy/script/rails
|
172
|
+
- spec/high_voltage/configuration_spec.rb
|
170
173
|
- spec/high_voltage/page_finder_spec.rb
|
171
174
|
- spec/high_voltage_spec.rb
|
172
175
|
- spec/integration/navigation_spec.rb
|
173
176
|
- spec/minimal_spec_helper.rb
|
177
|
+
- spec/requests/home_page_spec.rb
|
174
178
|
- spec/routing/routes_spec.rb
|
175
179
|
- spec/spec_helper.rb
|
176
180
|
- spec/support/caching.rb
|
@@ -185,17 +189,17 @@ require_paths:
|
|
185
189
|
- lib
|
186
190
|
required_ruby_version: !ruby/object:Gem::Requirement
|
187
191
|
requirements:
|
188
|
-
- -
|
192
|
+
- - ">="
|
189
193
|
- !ruby/object:Gem::Version
|
190
194
|
version: '0'
|
191
195
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
192
196
|
requirements:
|
193
|
-
- -
|
197
|
+
- - ">="
|
194
198
|
- !ruby/object:Gem::Version
|
195
199
|
version: '0'
|
196
200
|
requirements: []
|
197
201
|
rubyforge_project:
|
198
|
-
rubygems_version: 2.
|
202
|
+
rubygems_version: 2.2.0
|
199
203
|
signing_key:
|
200
204
|
specification_version: 4
|
201
205
|
summary: Simple static page rendering controller
|
@@ -249,12 +253,15 @@ test_files:
|
|
249
253
|
- spec/dummy/public/javascripts/effects.js
|
250
254
|
- spec/dummy/public/javascripts/prototype.js
|
251
255
|
- spec/dummy/public/javascripts/rails.js
|
256
|
+
- spec/dummy/public/pages/exists.html
|
252
257
|
- spec/dummy/public/stylesheets/.gitkeep
|
253
258
|
- spec/dummy/script/rails
|
259
|
+
- spec/high_voltage/configuration_spec.rb
|
254
260
|
- spec/high_voltage/page_finder_spec.rb
|
255
261
|
- spec/high_voltage_spec.rb
|
256
262
|
- spec/integration/navigation_spec.rb
|
257
263
|
- spec/minimal_spec_helper.rb
|
264
|
+
- spec/requests/home_page_spec.rb
|
258
265
|
- spec/routing/routes_spec.rb
|
259
266
|
- spec/spec_helper.rb
|
260
267
|
- spec/support/caching.rb
|