slimmer 3.24.0 → 3.25.0
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG.md +10 -0
- data/README.md +10 -9
- data/lib/slimmer.rb +0 -2
- data/lib/slimmer/app.rb +5 -0
- data/lib/slimmer/govuk_request_id.rb +18 -0
- data/lib/slimmer/skin.rb +9 -11
- data/lib/slimmer/test_templates/header_footer_only.html +3 -7
- data/lib/slimmer/test_templates/wrapper.html +3 -3
- data/lib/slimmer/version.rb +1 -1
- data/test/changelog_test.rb +10 -0
- data/test/skin_test.rb +29 -1
- metadata +23 -4
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,13 @@
|
|
1
|
+
# 3.25.0
|
2
|
+
|
3
|
+
* Pass on GOVUK-Request-Id HTTP header when fetching templates
|
4
|
+
* Use correct asset host in test templates
|
5
|
+
* Remove a redundant ERB pass over fetched templates
|
6
|
+
|
7
|
+
# 3.24.0
|
8
|
+
|
9
|
+
* Removed CampaignNotificationInserter. The homepage no longer needs these inserted.
|
10
|
+
|
1
11
|
# 3.1.0
|
2
12
|
|
3
13
|
* 'Breadcrumb' trail is now populated from the artefact data. It adds the section and subsection.
|
data/README.md
CHANGED
@@ -1,9 +1,9 @@
|
|
1
|
-
Slimmer provides
|
2
|
-
returned by a
|
1
|
+
Slimmer provides Rack middleware for applying a standard header and footer around pages
|
2
|
+
returned by a Ruby (Rack) application.
|
3
3
|
|
4
4
|
It does this by taking the page rendered by the application, extracting the contents of
|
5
|
-
a div with id 'wrapper' and inserting that into a div with the same id in one of its
|
6
|
-
It also transfers various other details, such as meta
|
5
|
+
a `div` with id 'wrapper' and inserting that into a `div` with the same id in one of its
|
6
|
+
templates. It also transfers various other details, such as `meta`, `script`, and `style` tags.
|
7
7
|
|
8
8
|
## Use in a Rails app
|
9
9
|
|
@@ -35,11 +35,11 @@ To get asset tag helpers to point to your external asset server, add
|
|
35
35
|
|
36
36
|
config.action_controller.asset_host = "http://my.alternative.host"
|
37
37
|
|
38
|
-
to application.rb
|
38
|
+
to `application.rb`.
|
39
39
|
|
40
40
|
## Specifying a template
|
41
41
|
|
42
|
-
A specific template can be requested by giving its name in the X-Slimmer-Template HTTP header.
|
42
|
+
A specific template can be requested by giving its name in the `X-Slimmer-Template` HTTP header.
|
43
43
|
|
44
44
|
In a controller action, you can do this by calling `slimmer_template`.
|
45
45
|
|
@@ -63,8 +63,9 @@ To get this, include Slimmer::Template in your ApplicationController:
|
|
63
63
|
|
64
64
|
## Logging
|
65
65
|
|
66
|
-
Slimmer can be configured with a logger by passing in a logger instance
|
67
|
-
|
66
|
+
Slimmer can be configured with a logger by passing in a logger instance
|
67
|
+
(anything that quacks like an instance of `Logger`). For example, to log
|
68
|
+
to the Rails log, put the following in an initializer:
|
68
69
|
|
69
70
|
YourApp::Application.configure do
|
70
71
|
config.slimmer.logger = Rails.logger
|
@@ -74,7 +75,7 @@ For example to log to the Rails log, put the following in an initializer:
|
|
74
75
|
|
75
76
|
**Debug logging**
|
76
77
|
|
77
|
-
By default if you pass in a logger with its log level set to debug
|
78
|
+
By default if you pass in a logger with its log level set to `debug`, slimmer will dup this logger and reduce the level to `info`. (Slimmer's debug logging is very noisy). To prevent this, set the `enable_debugging` option to true. e.g. for Rails:
|
78
79
|
|
79
80
|
YourApp::Application.configure do
|
80
81
|
config.slimmer.enable_debugging = true
|
data/lib/slimmer.rb
CHANGED
data/lib/slimmer/app.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
require 'slimmer/govuk_request_id'
|
2
|
+
|
1
3
|
module Slimmer
|
2
4
|
class App
|
3
5
|
attr_accessor :logger
|
@@ -81,6 +83,9 @@ module Slimmer
|
|
81
83
|
def rewrite_response(env, response)
|
82
84
|
request = Rack::Request.new(env)
|
83
85
|
|
86
|
+
# Store the request id so it can be passed on with any template requests
|
87
|
+
GovukRequestId.value = env['HTTP_GOVUK_REQUEST_ID']
|
88
|
+
|
84
89
|
rewritten_body = case response.status
|
85
90
|
when 200
|
86
91
|
@skin.success request, response, s(response.body)
|
@@ -0,0 +1,18 @@
|
|
1
|
+
module Slimmer
|
2
|
+
class GovukRequestId
|
3
|
+
class << self
|
4
|
+
def set?
|
5
|
+
!(value.nil? || value.empty?)
|
6
|
+
end
|
7
|
+
|
8
|
+
def value
|
9
|
+
Thread.current[:slimmer_govuk_request_id]
|
10
|
+
end
|
11
|
+
|
12
|
+
def value=(new_id)
|
13
|
+
Thread.current[:slimmer_govuk_request_id] = new_id
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
data/lib/slimmer/skin.rb
CHANGED
@@ -1,3 +1,6 @@
|
|
1
|
+
require 'rest_client'
|
2
|
+
require 'slimmer/govuk_request_id'
|
3
|
+
|
1
4
|
module Slimmer
|
2
5
|
class Skin
|
3
6
|
attr_accessor :use_cache, :template_cache, :asset_host, :logger, :strict, :options
|
@@ -28,14 +31,11 @@ module Slimmer
|
|
28
31
|
|
29
32
|
def load_template(template_name)
|
30
33
|
url = template_url(template_name)
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
end
|
37
|
-
template
|
38
|
-
rescue OpenURI::HTTPError => e
|
34
|
+
headers = {}
|
35
|
+
headers[:govuk_request_id] = GovukRequestId.value if GovukRequestId.set?
|
36
|
+
response = RestClient.get(url, headers)
|
37
|
+
response.body
|
38
|
+
rescue RestClient::Exception => e
|
39
39
|
raise TemplateNotFoundException, "Unable to fetch: '#{template_name}' from '#{url}' because #{e}", caller
|
40
40
|
rescue Errno::ECONNREFUSED => e
|
41
41
|
raise CouldNotRetrieveTemplate, "Unable to fetch: '#{template_name}' from '#{url}' because #{e}", caller
|
@@ -107,9 +107,7 @@ module Slimmer
|
|
107
107
|
end_time = Time.now
|
108
108
|
logger.debug "Slimmer: Skinning process completed at #{end_time} (#{end_time - start_time}s)"
|
109
109
|
|
110
|
-
|
111
|
-
# http://www.google.com/support/websiteoptimizer/bin/answer.py?hl=en_us&answer=64418
|
112
|
-
dest.to_html.sub(/<noscript rel=("|')placeholder("|')>/, "")
|
110
|
+
dest.to_html
|
113
111
|
end
|
114
112
|
|
115
113
|
def success(source_request, response, body)
|
@@ -16,12 +16,8 @@
|
|
16
16
|
|
17
17
|
<footer id="footer"></footer>
|
18
18
|
|
19
|
-
<script src="https://
|
20
|
-
<script src="https://
|
21
|
-
<script
|
22
|
-
<script defer src="https://static.preview.alphagov.co.uk/static/user-satisfaction-survey.js?body=1" type="text/javascript"></script>
|
23
|
-
<script defer src="https://static.preview.alphagov.co.uk/static/core.js?body=1" type="text/javascript"></script>
|
24
|
-
<script defer src="https://static.preview.alphagov.co.uk/static/report-a-problem.js?body=1" type="text/javascript"></script>
|
25
|
-
<script src="https://static.preview.alphagov.co.uk/static/header-footer-only.js" type="text/javascript"></script>
|
19
|
+
<script src="https://assets-origin.preview.alphagov.co.uk/static/govuk-template.js" type="text/javascript"></script>
|
20
|
+
<script src="https://assets-origin.preview.alphagov.co.uk/static/libs/jquery/jquery-1.7.2.js" type="text/javascript"></script>
|
21
|
+
<script src="https://assets-origin.preview.alphagov.co.uk/static/header-footer-only.js" type="text/javascript"></script>
|
26
22
|
</body>
|
27
23
|
</html>
|
@@ -16,8 +16,8 @@
|
|
16
16
|
|
17
17
|
<footer id="footer"></footer>
|
18
18
|
|
19
|
-
<script src="https://
|
20
|
-
<script src="https://
|
21
|
-
<script src="https://
|
19
|
+
<script src="https://assets-origin.preview.alphagov.co.uk/static/govuk-template.js" type="text/javascript"></script>
|
20
|
+
<script src="https://assets-origin.preview.alphagov.co.uk/static/libs/jquery/jquery-1.7.2.js" type="text/javascript"></script>
|
21
|
+
<script src="https://assets-origin.preview.alphagov.co.uk/static/application.js" type="text/javascript"></script>
|
22
22
|
</body>
|
23
23
|
</html>
|
data/lib/slimmer/version.rb
CHANGED
@@ -0,0 +1,10 @@
|
|
1
|
+
require_relative 'test_helper'
|
2
|
+
|
3
|
+
describe 'CHANGELOG' do
|
4
|
+
|
5
|
+
it "should have an entry for the current version" do
|
6
|
+
changelog_contents = File.read(File.expand_path("../../CHANGELOG.md", __FILE__))
|
7
|
+
|
8
|
+
assert_match /^#+\s*#{Regexp.escape(Slimmer::VERSION)}/, changelog_contents, "No entry for #{Slimmer::VERSION} found in CHANGELOG.md"
|
9
|
+
end
|
10
|
+
end
|
data/test/skin_test.rb
CHANGED
@@ -10,10 +10,38 @@ describe Slimmer::Skin do
|
|
10
10
|
|
11
11
|
template = skin.template 'example'
|
12
12
|
|
13
|
-
assert_requested :get,
|
13
|
+
assert_requested :get, expected_url
|
14
14
|
assert_equal "<foo />", template
|
15
15
|
end
|
16
16
|
|
17
|
+
describe "should pass the GOVUK-Request-Id header when requesting the template" do
|
18
|
+
before do
|
19
|
+
@skin = Slimmer::Skin.new asset_host: "http://example.local/"
|
20
|
+
@expected_url = "http://example.local/templates/example.html.erb"
|
21
|
+
stub_request(:get, @expected_url).to_return :body => "<foo />"
|
22
|
+
end
|
23
|
+
|
24
|
+
it "should pass the value from the original request if set" do
|
25
|
+
Slimmer::GovukRequestId.value = '12345'
|
26
|
+
template = @skin.template('example')
|
27
|
+
|
28
|
+
assert_requested :get, @expected_url do |request|
|
29
|
+
request.headers['Govuk-Request-Id'] == '12345'
|
30
|
+
end
|
31
|
+
assert_equal "<foo />", template
|
32
|
+
end
|
33
|
+
|
34
|
+
it "shouldnot set the header if the value is not set" do
|
35
|
+
Slimmer::GovukRequestId.value = ''
|
36
|
+
template = @skin.template('example')
|
37
|
+
|
38
|
+
assert_requested :get, @expected_url do |request|
|
39
|
+
! request.headers.has_key?('Govuk-Request-Id')
|
40
|
+
end
|
41
|
+
assert_equal "<foo />", template
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
17
45
|
describe "template caching" do
|
18
46
|
it "should not cache the template by default" do
|
19
47
|
skin = Slimmer::Skin.new asset_host: "http://example.local/"
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: slimmer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.
|
4
|
+
version: 3.25.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date:
|
13
|
+
date: 2014-01-09 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: nokogiri
|
@@ -108,6 +108,22 @@ dependencies:
|
|
108
108
|
- - ~>
|
109
109
|
- !ruby/object:Gem::Version
|
110
110
|
version: 0.1.3
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: rest-client
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
none: false
|
115
|
+
requirements:
|
116
|
+
- - ! '>='
|
117
|
+
- !ruby/object:Gem::Version
|
118
|
+
version: '0'
|
119
|
+
type: :runtime
|
120
|
+
prerelease: false
|
121
|
+
version_requirements: !ruby/object:Gem::Requirement
|
122
|
+
none: false
|
123
|
+
requirements:
|
124
|
+
- - ! '>='
|
125
|
+
- !ruby/object:Gem::Version
|
126
|
+
version: '0'
|
111
127
|
- !ruby/object:Gem::Dependency
|
112
128
|
name: rake
|
113
129
|
requirement: !ruby/object:Gem::Requirement
|
@@ -257,6 +273,7 @@ files:
|
|
257
273
|
- lib/slimmer/test.rb
|
258
274
|
- lib/slimmer/version.rb
|
259
275
|
- lib/slimmer/artefact.rb
|
276
|
+
- lib/slimmer/govuk_request_id.rb
|
260
277
|
- lib/slimmer/template.rb
|
261
278
|
- lib/slimmer/processors/header_context_inserter.rb
|
262
279
|
- lib/slimmer/processors/navigation_mover.rb
|
@@ -278,6 +295,7 @@ files:
|
|
278
295
|
- lib/tasks/slimmer.rake
|
279
296
|
- lib/slimmer.rb
|
280
297
|
- Rakefile
|
298
|
+
- test/changelog_test.rb
|
281
299
|
- test/typical_usage_test.rb
|
282
300
|
- test/skin_test.rb
|
283
301
|
- test/artefact_test.rb
|
@@ -318,7 +336,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
318
336
|
version: '0'
|
319
337
|
segments:
|
320
338
|
- 0
|
321
|
-
hash:
|
339
|
+
hash: 3065065351120828273
|
322
340
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
323
341
|
none: false
|
324
342
|
requirements:
|
@@ -327,7 +345,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
327
345
|
version: '0'
|
328
346
|
segments:
|
329
347
|
- 0
|
330
|
-
hash:
|
348
|
+
hash: 3065065351120828273
|
331
349
|
requirements: []
|
332
350
|
rubyforge_project: slimmer
|
333
351
|
rubygems_version: 1.8.23
|
@@ -335,6 +353,7 @@ signing_key:
|
|
335
353
|
specification_version: 3
|
336
354
|
summary: Thinner than the skinner
|
337
355
|
test_files:
|
356
|
+
- test/changelog_test.rb
|
338
357
|
- test/typical_usage_test.rb
|
339
358
|
- test/skin_test.rb
|
340
359
|
- test/artefact_test.rb
|