high_voltage 1.2.3 → 1.2.4

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore CHANGED
@@ -5,5 +5,5 @@ spec/dummy/db/*.sqlite3
5
5
  spec/dummy/log/*.log
6
6
  spec/dummy/tmp/
7
7
  *.swp
8
- gemfiles/*.lock
9
- *.gem
8
+ gemfiles/
9
+ *.gem
data/.travis.yml CHANGED
@@ -1,13 +1,5 @@
1
1
  language: ruby
2
2
  rvm:
3
- - 1.8.7
4
3
  - 1.9.2
5
4
  - 1.9.3
6
- gemfile:
7
- - gemfiles/rails_3.0.20.gemfile
8
- - gemfiles/rails_3.1.12.gemfile
9
- - gemfiles/rails_3.2.13.gemfile
10
- - gemfiles/rails_4.0.0.rc1.gemfile
11
- matrix:
12
- allow_failures:
13
- - gemfile: gemfiles/rails_4.0.0.rc1.gemfile
5
+ - 2.0.0
data/Appraisals CHANGED
@@ -1,5 +1,16 @@
1
- ['4.0.0.rc1', '3.2.13', '3.1.12', '3.0.20'].each do |rails_version|
2
- appraise "rails_#{rails_version}" do
3
- gem "rails", rails_version
1
+ if RUBY_VERSION >= '2.0'
2
+ rails_versions = ['~> 3.2.13', '~> 4.0.0']
3
+ else
4
+ rails_versions = ['~> 3.1.12', '~> 3.2.13']
5
+ end
6
+
7
+ rails_versions.each do |rails_version|
8
+ appraise "rails#{rails_version.slice(/\d+\.\d+/)}" do
9
+ gem 'rails', rails_version
10
+
11
+ if rails_version == '~> 4.0.0'
12
+ gem 'actionpack-action_caching'
13
+ gem 'actionpack-page_caching'
14
+ end
4
15
  end
5
16
  end
data/Gemfile.lock CHANGED
@@ -1,31 +1,16 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- high_voltage (1.2.2)
4
+ high_voltage (1.2.3)
5
5
 
6
6
  GEM
7
7
  remote: http://rubygems.org/
8
8
  specs:
9
- abstract (1.0.0)
10
- actionpack (3.0.10)
11
- activemodel (= 3.0.10)
12
- activesupport (= 3.0.10)
13
- builder (~> 2.1.2)
14
- erubis (~> 2.6.6)
15
- i18n (~> 0.5.0)
16
- rack (~> 1.2.1)
17
- rack-mount (~> 0.6.14)
18
- rack-test (~> 0.5.7)
19
- tzinfo (~> 0.3.23)
20
- activemodel (3.0.10)
21
- activesupport (= 3.0.10)
22
- builder (~> 2.1.2)
23
- i18n (~> 0.5.0)
24
- activesupport (3.0.10)
25
- appraisal (0.4.1)
9
+ activesupport (3.1.12)
10
+ multi_json (~> 1.0)
11
+ appraisal (0.5.2)
26
12
  bundler
27
13
  rake
28
- builder (2.1.2)
29
14
  capybara (2.0.3)
30
15
  mime-types (>= 1.16)
31
16
  nokogiri (>= 1.3.3)
@@ -35,49 +20,50 @@ GEM
35
20
  xpath (~> 1.0.0)
36
21
  childprocess (0.3.9)
37
22
  ffi (~> 1.0, >= 1.0.11)
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)
38
31
  diff-lcs (1.1.3)
39
- erubis (2.6.6)
40
- abstract (>= 1.0.0)
41
- ffi (1.8.1)
42
- i18n (0.5.0)
32
+ ffi (1.9.0)
33
+ method_source (0.8.1)
43
34
  mime-types (1.23)
44
- multi_json (1.7.3)
45
- nokogiri (1.5.9)
46
- rack (1.2.3)
47
- rack-mount (0.6.14)
48
- rack (>= 1.0.0)
49
- rack-test (0.5.7)
35
+ mini_portile (0.5.1)
36
+ multi_json (1.7.7)
37
+ nokogiri (1.6.0)
38
+ mini_portile (~> 0.5.0)
39
+ pry (0.9.12.2)
40
+ coderay (~> 1.0.5)
41
+ method_source (~> 0.8)
42
+ slop (~> 3.4)
43
+ pry-debugger (0.2.2)
44
+ debugger (~> 1.3)
45
+ pry (~> 0.9.10)
46
+ rack (1.5.2)
47
+ rack-test (0.6.2)
50
48
  rack (>= 1.0)
51
- railties (3.0.10)
52
- actionpack (= 3.0.10)
53
- activesupport (= 3.0.10)
54
- rake (>= 0.8.7)
55
- rdoc (~> 3.4)
56
- thor (~> 0.14.4)
57
- rake (0.9.2.2)
58
- rdoc (3.9.4)
59
- rspec (2.6.0)
60
- rspec-core (~> 2.6.0)
61
- rspec-expectations (~> 2.6.0)
62
- rspec-mocks (~> 2.6.0)
63
- rspec-core (2.6.4)
64
- rspec-expectations (2.6.0)
49
+ rake (10.1.0)
50
+ rspec (2.1.0)
51
+ rspec-core (~> 2.1.0)
52
+ rspec-expectations (~> 2.1.0)
53
+ rspec-mocks (~> 2.1.0)
54
+ rspec-core (2.1.0)
55
+ rspec-expectations (2.1.0)
65
56
  diff-lcs (~> 1.1.2)
66
- rspec-mocks (2.6.0)
67
- rspec-rails (2.6.1)
68
- actionpack (~> 3.0)
69
- activesupport (~> 3.0)
70
- railties (~> 3.0)
71
- rspec (~> 2.6.0)
57
+ rspec-mocks (2.1.0)
58
+ rspec-rails (2.1.0)
59
+ rspec (~> 2.1.0)
72
60
  rubyzip (0.9.9)
73
- selenium-webdriver (2.32.1)
61
+ selenium-webdriver (2.33.0)
74
62
  childprocess (>= 0.2.5)
75
63
  multi_json (~> 1.0)
76
64
  rubyzip
77
65
  websocket (~> 1.0.4)
78
- sqlite3 (1.3.4)
79
- thor (0.14.6)
80
- tzinfo (0.3.29)
66
+ slop (3.4.5)
81
67
  websocket (1.0.7)
82
68
  xpath (1.0.0)
83
69
  nokogiri (~> 1.3)
@@ -86,8 +72,9 @@ PLATFORMS
86
72
  ruby
87
73
 
88
74
  DEPENDENCIES
75
+ activesupport (>= 3.1.0)
89
76
  appraisal
90
77
  capybara (= 2.0.3)
91
78
  high_voltage!
79
+ pry-debugger
92
80
  rspec-rails
93
- sqlite3
data/NEWS.md CHANGED
@@ -1,7 +1,13 @@
1
+ New for 1.2.4:
2
+ + Add page and action caching
3
+ + Remove redundant link style `page_path(id: 'about')` from README
4
+ + Clean up Appraisals for Travis-CI
5
+ + Remove Ruby 1.8.7 from test suite
6
+
1
7
  New for 1.2.3:
2
8
  + Updates for Rails 4 compatibility.
3
9
  + Fix for Rails 4 circular dependency error.
4
- + Add ability to load HighVolage outside of rails. Require `attribute_accessors`
10
+ + Add ability to load High Voltage outside of rails. Require `attribute_accessors`
5
11
 
6
12
  New for 1.2.2:
7
13
  + Bug fix for RootRoute constraint. Support haml, slim, etc.
data/README.md CHANGED
@@ -4,26 +4,25 @@ Rails engine for static pages.
4
4
 
5
5
  ... but be careful. [Danger!](http://www.youtube.com/watch?v=HD5tnb2RBYg)
6
6
 
7
- Static pages?
8
- -------------
7
+ ## Static pages?
9
8
 
10
9
  Yeah, like "About us", "Directions", marketing pages, etc.
11
10
 
12
- Installation
13
- ------------
11
+ ## Installation
14
12
 
15
13
  $ gem install high_voltage
16
14
 
17
15
  Include in your Gemfile:
18
16
 
19
- gem "high_voltage"
17
+ ```ruby
18
+ gem 'high_voltage'
19
+ ```
20
20
 
21
21
  For Rails versions prior to 3.0, use the 0.9.2 tag of high_voltage:
22
22
 
23
23
  https://github.com/thoughtbot/high_voltage/tree/v0.9.2
24
24
 
25
- Usage
26
- -----
25
+ ## Usage
27
26
 
28
27
  Write your static pages and put them in the RAILS_ROOT/app/views/pages directory.
29
28
 
@@ -32,28 +31,29 @@ Write your static pages and put them in the RAILS_ROOT/app/views/pages directory
32
31
 
33
32
  After putting something interesting there, you can link to it from anywhere in your app with:
34
33
 
35
- link_to "About", page_path("about")
36
-
37
- This will also work, if you like the more explicit style:
38
-
39
- link_to "About", page_path(:id => "about")
34
+ ```ruby
35
+ link_to 'About', page_path('about')
36
+ ```
40
37
 
41
38
  You can nest pages in a directory structure, if that makes sense from a URL perspective for you:
42
39
 
43
- link_to "Q4 Reports", page_path("about/corporate/policies/HR/en_US/biz/sales/Quarter-Four")
40
+ ```ruby
41
+ link_to 'Q4 Reports', page_path('about/corporate/policies/HR/en_US/biz/sales/Quarter-Four')
42
+ ```
44
43
 
45
44
  Bam.
46
45
 
47
- Routes
48
- ------
46
+ ## Routes
49
47
 
50
48
  By default, the static page routes will be like /pages/:id (where :id is the view filename).
51
49
 
52
50
  If you want to route to a static page in another location (for example, a homepage), do this:
53
51
 
54
- get 'pages/home' => 'high_voltage/pages#show', :id => 'home'
52
+ ```ruby
53
+ get 'pages/home' => 'high_voltage/pages#show', id: 'home'
54
+ ```
55
55
 
56
- In that case, you'd need an app/views/pages/home.html.erb file.
56
+ In that case, you'd need an `app/views/pages/home.html.erb` file.
57
57
 
58
58
  Generally speaking, you need to route to the 'show' action with an :id param of the view filename.
59
59
 
@@ -62,20 +62,34 @@ want to generate a named route (with the :as routing option) for some route whic
62
62
  by High Voltage, make sure not to use :page as the name, because that will conflict with the named
63
63
  route generated by High Voltage itself.
64
64
 
65
- For example, this will work for top-level routes (we will
66
- get a named route called `static_path` which does not conflict with the generated `page_path` method):
67
-
68
- get '/:id' => 'high_voltage/pages#show', :as => :static, :via => :get
69
-
70
65
  #### Specifying a root path
71
66
 
72
- You can route the root url to a high voltage page like this:
67
+ You can route the root url to a High Voltage page like this:
73
68
 
74
- root :to => 'high_voltage/pages#show', :id => 'home'
69
+ ```ruby
70
+ root :to => 'high_voltage/pages#show', id: 'home'
71
+ ```
75
72
 
76
73
  Which will render a homepage from app/views/pages/home.html.erb
77
74
 
78
- #### Enabling root domain routes
75
+ #### Page title's 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.
79
+
80
+ ```ruby
81
+ # app/views/pages/about.html.erb
82
+ <%= content_for :page_title, 'About Us - Custom page title' %>
83
+ ```
84
+
85
+ Then print the contents of `:title` into the layout:
86
+
87
+ ```ruby
88
+ # app/views/layouts/application.html.erb
89
+ <title><%= yield(:page_title) %></title>
90
+ ```
91
+
92
+ #### Top-level routes
79
93
 
80
94
  You can remove the directory `pages` from the URL path and serve up routes from
81
95
  the root of the domain path:
@@ -90,31 +104,57 @@ Would look for corresponding files:
90
104
 
91
105
  This is accomplished by changing the `HighVoltage.route_drawer` to `HighVoltage::RouteDrawers::Root`
92
106
 
93
- # config/initializers/high_voltage.rb
94
- HighVoltage.route_drawer = HighVoltage::RouteDrawers::Root
95
-
96
- Note: This is not a catchall route. It will check the `HighVoltage.content_path`
97
- (by default this is `app/views/pages`) and validate the view exists.
107
+ ```ruby
108
+ # config/initializers/high_voltage.rb
109
+ HighVoltage.route_drawer = HighVoltage::RouteDrawers::Root
110
+ ```
98
111
 
99
112
  #### Disabling routes
100
113
 
101
- The default routes can be completely removed by changing the
102
- `HighVoltage.routes` to `false`
114
+ The default routes can be completely removed by changing the `HighVoltage.routes`
115
+ to `false`:
103
116
 
104
- # config/initializers/high_voltage.rb
105
- HighVoltage.routes = false
117
+ ```ruby
118
+ # config/initializers/high_voltage.rb
119
+ HighVoltage.routes = false
120
+ ```
106
121
 
107
- Customize
108
- --------
122
+ #### Content path
109
123
 
110
- High Voltage uses a default path and folder of 'pages', i.e. 'url.com/pages/contact' , 'app/views/pages'
124
+ High Voltage uses a default path and folder of 'pages', i.e. 'url.com/pages/contact',
125
+ 'app/views/pages'.
111
126
 
112
127
  You can change this in an initializer:
113
128
 
114
- HighVoltage.content_path = "site/"
129
+ ```ruby
130
+ # config/initializers/high_voltage.rb
131
+ HighVoltage.content_path = 'site/'
132
+ ```
133
+
134
+ #### Caching
135
+
136
+ 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).
115
137
 
116
- Override
117
- --------
138
+ To enable them you can add the following to your initializer:
139
+
140
+ ```ruby
141
+ # config/initializers/high_voltage.rb
142
+ HighVoltage.action_caching = true
143
+ # OR
144
+ HighVoltage.page_caching = true
145
+ ```
146
+
147
+ High Voltage will use your default cache store to store action caches.
148
+
149
+ Using caching with Ruby on Rails 4 or higher requires gems:
150
+
151
+ ```ruby
152
+ # Gemfile
153
+ gem 'actionpack-action_caching'
154
+ gem 'actionpack-page_caching'
155
+ ```
156
+
157
+ ## Override
118
158
 
119
159
  Most common reasons to override?
120
160
 
@@ -122,97 +162,106 @@ Most common reasons to override?
122
162
  * You need to render different layouts for different pages.
123
163
  * You need to render a partial from the `app/views/pages` directory.
124
164
 
125
- Create a PagesController of your own:
165
+ Create a `PagesController` of your own:
126
166
 
127
167
  $ rails generate controller pages
128
168
 
129
169
  Override the default route:
130
170
 
131
- # in config/routes.rb
132
- get "/pages/*id" => 'pages#show', :as => :page, :format => false
171
+ ```ruby
172
+ # config/routes.rb
173
+ get "/pages/*id" => 'pages#show', :as => :page, :format => false
133
174
 
134
- # if routing the root path, update for your controller
135
- root :to => 'pages#show', :id => 'home'
175
+ # if routing the root path, update for your controller
176
+ root :to => 'pages#show', :id => 'home'
177
+ ```
136
178
 
137
179
  Then modify it to subclass from High Voltage, adding whatever you need:
138
180
 
139
- class PagesController < HighVoltage::PagesController
140
- before_filter :authenticate
141
- layout :layout_for_page
142
-
143
- protected
144
- def layout_for_page
145
- case params[:id]
146
- when 'home'
147
- 'home'
148
- else
149
- 'application'
150
- end
151
- end
152
- end
181
+ ```ruby
182
+ # app/controllers/pages_controller.rb
183
+ class PagesController < HighVoltage::PagesController
184
+ before_filter :authenticate
185
+ layout :layout_for_page
186
+
187
+ protected
188
+ def layout_for_page
189
+ case params[:id]
190
+ when 'home'
191
+ 'home'
192
+ else
193
+ 'application'
194
+ end
195
+ end
196
+ end
197
+ ```
153
198
 
154
- Custom finding
155
- --------------
199
+ ## Custom finding
156
200
 
157
201
  You can further control the algorithm used to find pages by overriding
158
202
  the `page_finder_factory` method:
159
203
 
160
- class PagesController < HighVoltage::PagesController
161
- private
204
+ ```ruby
205
+ # app/controllers/pages_controller.rb
206
+ class PagesController < HighVoltage::PagesController
207
+ private
162
208
 
163
- def page_finder_factory
164
- Rot13PageFinder
165
- end
166
- end
209
+ def page_finder_factory
210
+ Rot13PageFinder
211
+ end
212
+ end
213
+ ```
167
214
 
168
215
  The easiest thing is to subclass `HighVoltage::PageFinder`, which
169
216
  provides you with `page_id`:
170
217
 
171
- class Rot13PageFinder < HighVoltage::PageFinder
172
- def find
173
- paths = super.split('/')
174
- directory = paths[0..-2]
175
- filename = paths[-1].tr('a-z','n-za-m')
218
+ ```ruby
219
+ class Rot13PageFinder < HighVoltage::PageFinder
220
+ def find
221
+ paths = super.split('/')
222
+ directory = paths[0..-2]
223
+ filename = paths[-1].tr('a-z','n-za-m')
176
224
 
177
- File.join(*directory, filename)
178
- end
179
- end
225
+ File.join(*directory, filename)
226
+ end
227
+ end
228
+ ```
180
229
 
181
230
  Use this to create a custom file mapping, clean filenames for your file
182
231
  system, A/B test, and so on.
183
232
 
184
- Testing
185
- -------
233
+ ## Testing
186
234
 
187
235
  You can test your static pages using [RSpec](https://github.com/rspec/rspec-rails)
188
236
  and [shoulda-matchers](https://github.com/thoughtbot/shoulda-matchers):
189
237
 
190
- # spec/controllers/pages_controller_spec.rb
191
- describe PagesController, '#show' do
192
- %w(earn_money screencast about contact).each do |page|
193
- context 'on GET to /pages/#{page}' do
194
- before do
195
- get :show, :id => page
196
- end
197
-
198
- it { should respond_with(:success) }
199
- it { should render_template(page) }
200
- end
238
+ ```ruby
239
+ # spec/controllers/pages_controller_spec.rb
240
+ describe PagesController, '#show' do
241
+ %w(earn_money screencast about contact).each do |page|
242
+ context 'on GET to /pages/#{page}' do
243
+ before do
244
+ get :show, :id => page
201
245
  end
246
+
247
+ it { should respond_with(:success) }
248
+ it { should render_template(page) }
202
249
  end
250
+ end
251
+ end
252
+ ```
203
253
 
204
254
  If you're not using a custom PagesController be sure to test
205
255
  `HighVoltage::PagesController` instead.
206
256
 
207
257
  Enjoy!
208
258
 
209
- Contributing
210
- ------------
259
+ ## Contributing
211
260
 
212
- Please see CONTRIBUTING.md for details.
261
+ Please see [CONTRIBUTING.md](https://github.com/thoughtbot/high_voltage/blob/master/CONTRIBUTING.md)
262
+ for details.
213
263
 
214
- Credits
215
- -------
264
+ ## Credits
216
265
 
217
266
  ![thoughtbot](http://thoughtbot.com/images/tm/logo.png)
218
267
 
@@ -222,8 +271,7 @@ Thank you to all [the contributors](https://github.com/thoughtbot/high_voltage/c
222
271
 
223
272
  The names and logos for thoughtbot are trademarks of thoughtbot, inc.
224
273
 
225
- License
226
- -------
274
+ ## License
227
275
 
228
276
  High Voltage is Copyright © 2009-2013 thoughtbot. It is free software, and may
229
277
  be redistributed under the terms specified in the MIT-LICENSE file.
data/Rakefile CHANGED
@@ -1,18 +1,19 @@
1
+ # encoding: utf-8
2
+
3
+ require 'rubygems'
1
4
  require 'bundler/setup'
2
5
  require 'bundler/gem_tasks'
3
- require 'appraisal'
4
6
 
7
+ require 'rake'
5
8
  require 'rspec/core/rake_task'
9
+ require 'appraisal'
10
+
6
11
  RSpec::Core::RakeTask.new(:spec)
7
12
 
8
- task :default do |t|
9
- if ENV['BUNDLE_GEMFILE'] =~ /gemfiles/
10
- exec 'rake spec'
11
- else
12
- Rake::Task['appraise'].execute
13
- end
14
- end
13
+ desc 'Default'
14
+ task :default => [:all]
15
15
 
16
- task :appraise => ['appraisal:install'] do |t|
17
- exec 'rake appraisal'
16
+ desc 'Test the engine under all supported Rails versions'
17
+ task all: ['appraisal:install'] do |t|
18
+ exec 'rake appraisal spec'
18
19
  end
@@ -1,6 +1,18 @@
1
1
  class HighVoltage::PagesController < ApplicationController
2
2
  layout Proc.new { |_| HighVoltage.layout }
3
3
 
4
+ if respond_to?('caches_action')
5
+ caches_action :show, if: Proc.new {
6
+ HighVoltage.action_caching
7
+ }
8
+ end
9
+
10
+ if respond_to?('caches_page')
11
+ caches_page :show, if: Proc.new {
12
+ HighVoltage.page_caching
13
+ }
14
+ end
15
+
4
16
  rescue_from ActionView::MissingTemplate do |exception|
5
17
  if exception.message =~ %r{Missing template #{page_finder.content_path}}
6
18
  raise ActionController::RoutingError, "No such page: #{params[:id]}"
data/high_voltage.gemspec CHANGED
@@ -8,15 +8,16 @@ Gem::Specification.new do |s|
8
8
  s.email = ['support@thoughtbot.com']
9
9
  s.homepage = 'http://github.com/thoughtbot/high_voltage'
10
10
  s.summary = 'Simple static page rendering controller'
11
- s.description = 'Fire in the disco. Fire in the ... taco bell.'
11
+ s.description = 'Fire in the disco. Fire in the ... taco bell.'
12
12
 
13
13
  s.files = `git ls-files`.split("\n")
14
14
  s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
15
15
  s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
16
16
  s.require_paths = ["lib"]
17
17
 
18
+ s.add_development_dependency("activesupport", ">= 3.1.0")
18
19
  s.add_development_dependency("appraisal")
19
- s.add_development_dependency("rspec-rails")
20
20
  s.add_development_dependency("capybara", "= 2.0.3")
21
- s.add_development_dependency("sqlite3")
21
+ s.add_development_dependency("pry-debugger")
22
+ s.add_development_dependency("rspec-rails")
22
23
  end
data/lib/high_voltage.rb CHANGED
@@ -18,6 +18,12 @@ module HighVoltage
18
18
  mattr_accessor :routes
19
19
  @@routes = true
20
20
 
21
+ mattr_accessor :action_caching
22
+ @@action_caching = false
23
+
24
+ mattr_accessor :page_caching
25
+ @@page_caching = false
26
+
21
27
  def self.setup
22
28
  yield self
23
29
  end
@@ -1,3 +1,3 @@
1
1
  module HighVoltage
2
- VERSION = '1.2.3'.freeze
2
+ VERSION = '1.2.4'.freeze
3
3
  end
@@ -3,19 +3,23 @@ require 'spec_helper'
3
3
  describe HighVoltage::Constraints::RootRoute, '.matches?' do
4
4
  context 'view file exists' do
5
5
  it 'should return true' do
6
- request = stub(:path => 'index')
7
- Dir.stub!(:glob).and_return(['about.html.erb'])
6
+ request = double(path: 'index')
7
+ Dir.stub(:glob).and_return(['about.html.erb'])
8
8
 
9
- HighVoltage::Constraints::RootRoute.matches?(request).should be_true
9
+ result = HighVoltage::Constraints::RootRoute.matches?(request)
10
+
11
+ expect(result).to be_true
10
12
  end
11
13
  end
12
14
 
13
15
  context 'view file does not exist' do
14
16
  it 'should return false' do
15
- request = stub(:path => 'index')
16
- File.stub!(:glob).and_return([])
17
+ request = double(path: 'index')
18
+ File.stub(:glob).and_return([])
19
+
20
+ result = HighVoltage::Constraints::RootRoute.matches?(request)
17
21
 
18
- HighVoltage::Constraints::RootRoute.matches?(request).should be_false
22
+ expect(result).to be_false
19
23
  end
20
24
  end
21
25
  end
@@ -0,0 +1,26 @@
1
+ require 'spec_helper'
2
+
3
+ describe HighVoltage::PagesController, 'action_caching' do
4
+ it 'caches the action when action_caching is set to true', enable_caching: true do
5
+ HighVoltage.action_caching = true
6
+
7
+ load('high_voltage/pages_controller.rb')
8
+ get :show, id: 'exists'
9
+
10
+ action_was_cached(:exists).should be_true
11
+ end
12
+
13
+ it 'does not cache the action when action_caching is set to false', enable_caching: true do
14
+ HighVoltage.action_caching = false
15
+
16
+ load('high_voltage/pages_controller.rb')
17
+ get :show, id: 'exists'
18
+
19
+ action_was_cached(:exists).should be_false
20
+ end
21
+
22
+ def action_was_cached(page)
23
+ ActionController::Base.cache_store.exist?("views/test.host#{page_path(page)}")
24
+ end
25
+ end
26
+
@@ -0,0 +1,22 @@
1
+ require 'spec_helper'
2
+
3
+ describe HighVoltage::PagesController, 'action_caching' do
4
+ it 'caches the page when page_caching is set to true', enable_caching: true do
5
+ controller.should_receive(:cache_page).at_least(:once)
6
+
7
+ HighVoltage.page_caching = true
8
+
9
+ load('high_voltage/pages_controller.rb')
10
+ get :show, id: 'exists'
11
+ end
12
+
13
+ it 'does not cache the page when page_caching is set to false', enable_caching: true do
14
+ controller.should_receive(:cache_page).never
15
+
16
+ HighVoltage.page_caching = false
17
+
18
+ load('high_voltage/pages_controller.rb')
19
+ get :show, id: 'exists'
20
+ end
21
+ end
22
+
@@ -0,0 +1 @@
1
+ Dummy::Application.config.secret_key_base = '9c0b876ab8f513cc23d354b6d684c88eb9bc5f73ddc8d5843e7c6ac9176c5819adc2620e220980a3cb818de687753f1bfc56c66c4454b74fc7d432813f8e555a'
@@ -3,7 +3,7 @@ require 'spec_helper'
3
3
  describe 'routes' do
4
4
  context 'using default configuration' do
5
5
  it 'should generate normal resource route with id' do
6
- page_path(:id => 'one').should eq '/pages/one'
6
+ page_path('one').should eq '/pages/one'
7
7
  end
8
8
 
9
9
  it 'should generate normal resource route with string' do
@@ -48,7 +48,7 @@ describe 'routes' do
48
48
  end
49
49
  end
50
50
 
51
- context 'using root routing configuration' do
51
+ context 'using top-level routing configuration' do
52
52
  around do |example|
53
53
  cached_high_voltage_route_drawer = HighVoltage.route_drawer
54
54
  HighVoltage.route_drawer = HighVoltage::RouteDrawers::Root
@@ -60,10 +60,6 @@ describe 'routes' do
60
60
  Rails.application.reload_routes!
61
61
  end
62
62
 
63
- it 'should generate normal resource route with id' do
64
- page_path(:id => 'one').should eq '/one'
65
- end
66
-
67
63
  it 'should generate normal resource route with string' do
68
64
  page_path('one').should eq '/one'
69
65
  end
@@ -85,10 +81,6 @@ describe 'routes' do
85
81
  Rails.application.reload_routes!
86
82
  end
87
83
 
88
- it 'should generate normal resource route with id' do
89
- page_path(:id => 'one').should eq '/other_pages/one'
90
- end
91
-
92
84
  it 'should generate normal resource route with string' do
93
85
  page_path('one').should eq '/other_pages/one'
94
86
  end
data/spec/spec_helper.rb CHANGED
@@ -1,14 +1,17 @@
1
1
  ENV['RAILS_ENV'] = 'test'
2
2
 
3
3
  require File.expand_path("../dummy/config/environment.rb", __FILE__)
4
+ require 'pry'
4
5
  require 'rails/test_help'
5
6
  require 'rspec/rails'
6
7
  require 'capybara/rails'
7
8
 
8
9
  Rails.backtrace_cleaner.remove_silencers!
9
- Capybara.default_driver = :rack_test
10
+ Capybara.default_driver = :rack_test
10
11
  Capybara.default_selector = :css
11
12
 
13
+ Dir[File.dirname(__FILE__) + '/support/**/*.rb'].each {|f| require f}
14
+
12
15
  RSpec.configure do |config|
13
16
  require 'rspec/expectations'
14
17
  config.include RSpec::Matchers
@@ -0,0 +1,12 @@
1
+ RSpec.configure do |config|
2
+ config.around(:each, enable_caching: true) do |example|
3
+ ActionController::Base.perform_caching = true
4
+ old_cache_store = ActionController::Base.cache_store
5
+ ActionController::Base.cache_store = :memory_store
6
+
7
+ example.run
8
+
9
+ ActionController::Base.cache_store = old_cache_store
10
+ ActionController::Base.perform_caching = false
11
+ end
12
+ end
metadata CHANGED
@@ -1,7 +1,8 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: high_voltage
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.3
4
+ version: 1.2.4
5
+ prerelease:
5
6
  platform: ruby
6
7
  authors:
7
8
  - Matt Jankowski
@@ -16,25 +17,28 @@ authors:
16
17
  autorequire:
17
18
  bindir: bin
18
19
  cert_chain: []
19
- date: 2013-06-15 00:00:00.000000000 Z
20
+ date: 2013-07-19 00:00:00.000000000 Z
20
21
  dependencies:
21
22
  - !ruby/object:Gem::Dependency
22
- name: appraisal
23
+ name: activesupport
23
24
  requirement: !ruby/object:Gem::Requirement
25
+ none: false
24
26
  requirements:
25
27
  - - ! '>='
26
28
  - !ruby/object:Gem::Version
27
- version: '0'
29
+ version: 3.1.0
28
30
  type: :development
29
31
  prerelease: false
30
32
  version_requirements: !ruby/object:Gem::Requirement
33
+ none: false
31
34
  requirements:
32
35
  - - ! '>='
33
36
  - !ruby/object:Gem::Version
34
- version: '0'
37
+ version: 3.1.0
35
38
  - !ruby/object:Gem::Dependency
36
- name: rspec-rails
39
+ name: appraisal
37
40
  requirement: !ruby/object:Gem::Requirement
41
+ none: false
38
42
  requirements:
39
43
  - - ! '>='
40
44
  - !ruby/object:Gem::Version
@@ -42,6 +46,7 @@ dependencies:
42
46
  type: :development
43
47
  prerelease: false
44
48
  version_requirements: !ruby/object:Gem::Requirement
49
+ none: false
45
50
  requirements:
46
51
  - - ! '>='
47
52
  - !ruby/object:Gem::Version
@@ -49,6 +54,7 @@ dependencies:
49
54
  - !ruby/object:Gem::Dependency
50
55
  name: capybara
51
56
  requirement: !ruby/object:Gem::Requirement
57
+ none: false
52
58
  requirements:
53
59
  - - '='
54
60
  - !ruby/object:Gem::Version
@@ -56,13 +62,31 @@ dependencies:
56
62
  type: :development
57
63
  prerelease: false
58
64
  version_requirements: !ruby/object:Gem::Requirement
65
+ none: false
59
66
  requirements:
60
67
  - - '='
61
68
  - !ruby/object:Gem::Version
62
69
  version: 2.0.3
63
70
  - !ruby/object:Gem::Dependency
64
- name: sqlite3
71
+ name: pry-debugger
72
+ requirement: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
78
+ type: :development
79
+ prerelease: false
80
+ version_requirements: !ruby/object:Gem::Requirement
81
+ none: false
82
+ requirements:
83
+ - - ! '>='
84
+ - !ruby/object:Gem::Version
85
+ version: '0'
86
+ - !ruby/object:Gem::Dependency
87
+ name: rspec-rails
65
88
  requirement: !ruby/object:Gem::Requirement
89
+ none: false
66
90
  requirements:
67
91
  - - ! '>='
68
92
  - !ruby/object:Gem::Version
@@ -70,11 +94,12 @@ dependencies:
70
94
  type: :development
71
95
  prerelease: false
72
96
  version_requirements: !ruby/object:Gem::Requirement
97
+ none: false
73
98
  requirements:
74
99
  - - ! '>='
75
100
  - !ruby/object:Gem::Version
76
101
  version: '0'
77
- description: Fire in the disco. Fire in the ... taco bell.
102
+ description: Fire in the disco. Fire in the ... taco bell.
78
103
  email:
79
104
  - support@thoughtbot.com
80
105
  executables: []
@@ -93,10 +118,6 @@ files:
93
118
  - Rakefile
94
119
  - app/controllers/high_voltage/pages_controller.rb
95
120
  - config/routes.rb
96
- - gemfiles/rails_3.0.20.gemfile
97
- - gemfiles/rails_3.1.12.gemfile
98
- - gemfiles/rails_3.2.13.gemfile
99
- - gemfiles/rails_4.0.0.rc1.gemfile
100
121
  - high_voltage.gemspec
101
122
  - lib/high_voltage.rb
102
123
  - lib/high_voltage/constraints/root_route.rb
@@ -106,7 +127,9 @@ files:
106
127
  - lib/high_voltage/route_drawers/root.rb
107
128
  - lib/high_voltage/version.rb
108
129
  - spec/constraints/root_route_spec.rb
130
+ - spec/controllers/action_caching_controller_spec.rb
109
131
  - spec/controllers/alternative_finder_controller_spec.rb
132
+ - spec/controllers/page_caching_controller_spec.rb
110
133
  - spec/controllers/pages_controller_spec.rb
111
134
  - spec/controllers/subclassed_pages_controller_spec.rb
112
135
  - spec/dummy/Rakefile
@@ -137,6 +160,7 @@ files:
137
160
  - spec/dummy/config/initializers/backtrace_silencers.rb
138
161
  - spec/dummy/config/initializers/inflections.rb
139
162
  - spec/dummy/config/initializers/mime_types.rb
163
+ - spec/dummy/config/initializers/secret_key_base.rb
140
164
  - spec/dummy/config/initializers/secret_token.rb
141
165
  - spec/dummy/config/initializers/session_store.rb
142
166
  - spec/dummy/config/locales/en.yml
@@ -159,32 +183,36 @@ files:
159
183
  - spec/minimal_spec_helper.rb
160
184
  - spec/routing/routes_spec.rb
161
185
  - spec/spec_helper.rb
186
+ - spec/support/caching.rb
162
187
  homepage: http://github.com/thoughtbot/high_voltage
163
188
  licenses: []
164
- metadata: {}
165
189
  post_install_message:
166
190
  rdoc_options: []
167
191
  require_paths:
168
192
  - lib
169
193
  required_ruby_version: !ruby/object:Gem::Requirement
194
+ none: false
170
195
  requirements:
171
196
  - - ! '>='
172
197
  - !ruby/object:Gem::Version
173
198
  version: '0'
174
199
  required_rubygems_version: !ruby/object:Gem::Requirement
200
+ none: false
175
201
  requirements:
176
202
  - - ! '>='
177
203
  - !ruby/object:Gem::Version
178
204
  version: '0'
179
205
  requirements: []
180
206
  rubyforge_project:
181
- rubygems_version: 2.0.3
207
+ rubygems_version: 1.8.23
182
208
  signing_key:
183
- specification_version: 4
209
+ specification_version: 3
184
210
  summary: Simple static page rendering controller
185
211
  test_files:
186
212
  - spec/constraints/root_route_spec.rb
213
+ - spec/controllers/action_caching_controller_spec.rb
187
214
  - spec/controllers/alternative_finder_controller_spec.rb
215
+ - spec/controllers/page_caching_controller_spec.rb
188
216
  - spec/controllers/pages_controller_spec.rb
189
217
  - spec/controllers/subclassed_pages_controller_spec.rb
190
218
  - spec/dummy/Rakefile
@@ -215,6 +243,7 @@ test_files:
215
243
  - spec/dummy/config/initializers/backtrace_silencers.rb
216
244
  - spec/dummy/config/initializers/inflections.rb
217
245
  - spec/dummy/config/initializers/mime_types.rb
246
+ - spec/dummy/config/initializers/secret_key_base.rb
218
247
  - spec/dummy/config/initializers/secret_token.rb
219
248
  - spec/dummy/config/initializers/session_store.rb
220
249
  - spec/dummy/config/locales/en.yml
@@ -237,3 +266,4 @@ test_files:
237
266
  - spec/minimal_spec_helper.rb
238
267
  - spec/routing/routes_spec.rb
239
268
  - spec/spec_helper.rb
269
+ - spec/support/caching.rb
checksums.yaml DELETED
@@ -1,15 +0,0 @@
1
- ---
2
- !binary "U0hBMQ==":
3
- metadata.gz: !binary |-
4
- NWVlZTI0NjBiNWVhZTlhNzhkOWNiMzdiYTg3ZDBiYmFkM2M0NGJlZQ==
5
- data.tar.gz: !binary |-
6
- Y2YwZGEzMmI5ZGRkOGQ1MjYyMGU2ZDE0ZjFjYTJmNTM0ODllNGYwMw==
7
- !binary "U0hBNTEy":
8
- metadata.gz: !binary |-
9
- MWFlZGU0YzFmOWE5Yzk0NDFhZmU4ZjhiODNlMjAxN2M5MzNjNTU2MWEyMDhi
10
- ZThiNDlkNGFlYzBiMGYwMzU1MzNjYmQ4OTNkODBjYjg0OTI5YjQyZTQ4OTQz
11
- Y2E5MGIwZDFhMjhhYWQyNTBiMzZhODIyZDlmZmY3MTFmYzNiMWE=
12
- data.tar.gz: !binary |-
13
- YjExZjI0Mzc2NTI5ZTJmNjc4OTdhZWZmZmY2Y2EwZTgxOTBkMDQyZDBmNTky
14
- YmQ2NzA0NmJhM2Q3OTJhNDA1YTdjMjllYjQ1MTA5YjhhYjdjOGY5NTM4YjFk
15
- MzEzYjIzMzdiOTcyYmMzZWFjNTRmYTRkZDk3ODA1ZWYyNjc0MzQ=
@@ -1,7 +0,0 @@
1
- # This file was generated by Appraisal
2
-
3
- source "http://rubygems.org"
4
-
5
- gem "rails", "3.0.20"
6
-
7
- gemspec :path=>"../"
@@ -1,7 +0,0 @@
1
- # This file was generated by Appraisal
2
-
3
- source "http://rubygems.org"
4
-
5
- gem "rails", "3.1.12"
6
-
7
- gemspec :path=>"../"
@@ -1,7 +0,0 @@
1
- # This file was generated by Appraisal
2
-
3
- source "http://rubygems.org"
4
-
5
- gem "rails", "3.2.13"
6
-
7
- gemspec :path=>"../"
@@ -1,7 +0,0 @@
1
- # This file was generated by Appraisal
2
-
3
- source "http://rubygems.org"
4
-
5
- gem "rails", "4.0.0.rc1"
6
-
7
- gemspec :path=>"../"