rack-revision-info 0.3.7 → 0.4

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.
@@ -9,6 +9,7 @@ module Rack
9
9
  @revision_info = "#{get_revision_label(opts)} #{revision || 'unknown'}"
10
10
  @revision_info << " (#{date.strftime(get_date_format(opts))})" if date
11
11
  @action = (opts.keys & INJECT_ACTIONS).first
12
+ @into_header = opts[:header]
12
13
  if @action
13
14
  require ::File.join(::File.dirname(__FILE__), 'rack-revision-info', 'nokogiri_backend')
14
15
  @selector = opts[@action]
@@ -18,7 +19,10 @@ module Rack
18
19
 
19
20
  def call(env)
20
21
  status, headers, body = @app.call(env)
21
- if headers['Content-Type'].to_s.include?('text/html') && !Rack::Request.new(env).xhr?
22
+ if @into_header
23
+ h = @into_header == true ? 'X-Revision-Info' : @into_header
24
+ headers[h] = @revision_info
25
+ elsif headers['Content-Type'].to_s.include?('text/html') && !Rack::Request.new(env).xhr?
22
26
  new_body = ""
23
27
  body.each { |line| new_body << line }
24
28
  body = new_body
@@ -2,7 +2,8 @@ require 'rubygems'
2
2
  require 'spec'
3
3
  require 'rack/builder'
4
4
  require 'rack/mock'
5
- require File.join(File.dirname(__FILE__), '..', 'lib', 'rack-revision-info.rb')
5
+ require 'date'
6
+ require File.expand_path File.join(File.dirname(__FILE__), '..', 'lib', 'rack-revision-info.rb')
6
7
 
7
8
  class Rack::RevisionInfo
8
9
  DATETIME_FORMAT = "%Y-%m-%d %H:%M:%S %Z"
@@ -79,7 +80,7 @@ describe "Rack::RevisionInfo" do
79
80
  response = Rack::MockRequest.new(app).get('/')
80
81
  end.should raise_error(ArgumentError)
81
82
  end
82
-
83
+
83
84
  it "should inject revision info into DOM" do
84
85
  Rack::RevisionInfo::INJECT_ACTIONS.each do |action|
85
86
  app = Rack::Builder.new do
@@ -100,6 +101,24 @@ describe "Rack::RevisionInfo" do
100
101
  response.body.should_not match(/#{Regexp.escape("Revision #{REV} (#{DATE.strftime(Rack::RevisionInfo::DATETIME_FORMAT)})")}.*#{Regexp.escape("</body>")}/m)
101
102
  end
102
103
 
104
+ it "should put revision info into X-Revision-Info header" do
105
+ app = Rack::Builder.new do
106
+ use Rack::RevisionInfo, :path => "/some/path/to/repo", :header => true
107
+ run lambda { |env| [200, { 'Content-Type' => 'application/xml' }, ['<response><some_xml></some_xml></response>']] }
108
+ end
109
+ response = Rack::MockRequest.new(app).get('/')
110
+ response.headers['X-Revision-Info'].should match(/#{Regexp.escape("#{REV} (#{DATE.strftime(Rack::RevisionInfo::DATETIME_FORMAT)})")}/m)
111
+ end
112
+
113
+ it "should put revision info into My-Custom-Header header" do
114
+ app = Rack::Builder.new do
115
+ use Rack::RevisionInfo, :path => "/some/path/to/repo", :header => 'My-Custom-Header'
116
+ run lambda { |env| [200, { 'Content-Type' => 'application/xml' }, ['<response><some_xml></some_xml></response>']] }
117
+ end
118
+ response = Rack::MockRequest.new(app).get('/')
119
+ response.headers['My-Custom-Header'].should match(/#{Regexp.escape("#{REV} (#{DATE.strftime(Rack::RevisionInfo::DATETIME_FORMAT)})")}/m)
120
+ end
121
+
103
122
  it "shouldn't escape backslashes" do # hpricot was doing this :|
104
123
  app = Rack::Builder.new do
105
124
  use Rack::RevisionInfo, :path => "/some/path/to/repo", :inner_html => "#footer"
metadata CHANGED
@@ -1,7 +1,11 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rack-revision-info
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.7
4
+ prerelease: false
5
+ segments:
6
+ - 0
7
+ - 4
8
+ version: "0.4"
5
9
  platform: ruby
6
10
  authors:
7
11
  - Marcin Kulik
@@ -9,19 +13,22 @@ autorequire:
9
13
  bindir: bin
10
14
  cert_chain: []
11
15
 
12
- date: 2009-11-27 00:00:00 +01:00
16
+ date: 2010-04-10 00:00:00 +02:00
13
17
  default_executable:
14
18
  dependencies:
15
19
  - !ruby/object:Gem::Dependency
16
20
  name: nokogiri
17
- type: :runtime
18
- version_requirement:
19
- version_requirements: !ruby/object:Gem::Requirement
21
+ prerelease: false
22
+ requirement: &id001 !ruby/object:Gem::Requirement
20
23
  requirements:
21
24
  - - ">="
22
25
  - !ruby/object:Gem::Version
26
+ segments:
27
+ - 1
28
+ - 2
23
29
  version: "1.2"
24
- version:
30
+ type: :runtime
31
+ version_requirements: *id001
25
32
  description:
26
33
  email: marcin.kulik@gmail.com
27
34
  executables: []
@@ -47,18 +54,20 @@ required_ruby_version: !ruby/object:Gem::Requirement
47
54
  requirements:
48
55
  - - ">="
49
56
  - !ruby/object:Gem::Version
57
+ segments:
58
+ - 0
50
59
  version: "0"
51
- version:
52
60
  required_rubygems_version: !ruby/object:Gem::Requirement
53
61
  requirements:
54
62
  - - ">="
55
63
  - !ruby/object:Gem::Version
64
+ segments:
65
+ - 0
56
66
  version: "0"
57
- version:
58
67
  requirements: []
59
68
 
60
69
  rubyforge_project:
61
- rubygems_version: 1.3.5
70
+ rubygems_version: 1.3.6
62
71
  signing_key:
63
72
  specification_version: 3
64
73
  summary: Rack middleware showing current git (or svn) revision number of application