heroku-nav 0.1.17 → 0.1.18
Sign up to get free protection for your applications and to get access to all the features.
- data/Rakefile +1 -1
- data/heroku-nav.gemspec +2 -2
- data/lib/heroku/nav.rb +5 -1
- data/spec/nav_spec.rb +35 -13
- metadata +3 -3
data/Rakefile
CHANGED
@@ -21,7 +21,7 @@ begin
|
|
21
21
|
gemspec.add_dependency(%q<rest-client>, [">= 1.0"])
|
22
22
|
gemspec.add_dependency(%q<json>, [">= 0"])
|
23
23
|
|
24
|
-
gemspec.version = '0.1.
|
24
|
+
gemspec.version = '0.1.18'
|
25
25
|
end
|
26
26
|
rescue LoadError
|
27
27
|
puts "Jeweler not available. Install it with: gem install jeweler"
|
data/heroku-nav.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{heroku-nav}
|
8
|
-
s.version = "0.1.
|
8
|
+
s.version = "0.1.18"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["David Dollar", "Pedro Belo", "Todd Matthews"]
|
12
|
-
s.date = %q{2010-
|
12
|
+
s.date = %q{2010-09-10}
|
13
13
|
s.description = %q{}
|
14
14
|
s.email = ["david@heroku.com", "pedro@heroku.com", "todd@heroku.com"]
|
15
15
|
s.files = [
|
data/lib/heroku/nav.rb
CHANGED
@@ -118,10 +118,14 @@ module Heroku
|
|
118
118
|
end
|
119
119
|
end
|
120
120
|
|
121
|
+
def can_insert?(env)
|
122
|
+
super && env['HTTP_COOKIE'] && env['HTTP_COOKIE'].include?('heroku-nav-data')
|
123
|
+
end
|
124
|
+
|
121
125
|
def insert!
|
122
126
|
if @nav
|
123
127
|
match = @body.match(/(\<body[^\>]*\>)/i)
|
124
|
-
if match.size > 0
|
128
|
+
if match && match.size > 0
|
125
129
|
@body.insert(match.end(0), @nav)
|
126
130
|
@headers['Content-Length'] = @body.length.to_s
|
127
131
|
end
|
data/spec/nav_spec.rb
CHANGED
@@ -112,30 +112,52 @@ describe Heroku::Nav::Provider do
|
|
112
112
|
Heroku::Nav::Provider.stubs(:fetch).returns('<!-- heroku header -->')
|
113
113
|
end
|
114
114
|
|
115
|
-
|
116
|
-
|
117
|
-
|
115
|
+
describe "when there's no heroku-nav-data cookie" do
|
116
|
+
def app
|
117
|
+
make_app { use Heroku::Nav::Provider }
|
118
|
+
end
|
118
119
|
|
119
|
-
|
120
|
-
|
121
|
-
|
120
|
+
it "doesn't add the body" do
|
121
|
+
get '/', :body => '<html><body>hi</body>'
|
122
|
+
last_response.body.should.equal '<html><body>hi</body>'
|
123
|
+
end
|
122
124
|
end
|
123
125
|
|
124
|
-
describe "
|
126
|
+
describe "when there's a heroku-nav-data cookie" do
|
125
127
|
before do
|
126
|
-
|
128
|
+
set_cookie("heroku-nav-data=data")
|
127
129
|
end
|
128
130
|
|
129
131
|
def app
|
130
132
|
make_app { use Heroku::Nav::Provider }
|
131
133
|
end
|
132
134
|
|
133
|
-
|
134
|
-
# html by using gsub. That worked out alright until the html got a sequence of
|
135
|
-
# chars like "\+". those got interpreted by gsub and resulted in a bad output
|
136
|
-
it "doesn't freakout if the header contains special chars relevant to Ruby's gsub" do
|
135
|
+
it "adds the body" do
|
137
136
|
get '/', :body => '<html><body>hi</body>'
|
138
|
-
last_response.body.should.equal '<html><body><!--
|
137
|
+
last_response.body.should.equal '<html><body><!-- heroku header -->hi</body>'
|
138
|
+
end
|
139
|
+
|
140
|
+
it "doesn't add if there is no body tag" do
|
141
|
+
get '/', :body => 'no body!'
|
142
|
+
last_response.body.should.equal 'no body!'
|
143
|
+
end
|
144
|
+
|
145
|
+
describe "special chars" do
|
146
|
+
before do
|
147
|
+
Heroku::Nav::Provider.stubs(:fetch).returns('<!-- \+ nav -->')
|
148
|
+
end
|
149
|
+
|
150
|
+
def app
|
151
|
+
make_app { use Heroku::Nav::Provider }
|
152
|
+
end
|
153
|
+
|
154
|
+
# tricky situation, the first implementation of Heroku::Nav would inject the
|
155
|
+
# html by using gsub. That worked out alright until the html got a sequence of
|
156
|
+
# chars like "\+". those got interpreted by gsub and resulted in a bad output
|
157
|
+
it "doesn't freakout if the header contains special chars relevant to Ruby's gsub" do
|
158
|
+
get '/', :body => '<html><body>hi</body>'
|
159
|
+
last_response.body.should.equal '<html><body><!-- \+ nav -->hi</body>'
|
160
|
+
end
|
139
161
|
end
|
140
162
|
end
|
141
163
|
end
|
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 0
|
7
7
|
- 1
|
8
|
-
-
|
9
|
-
version: 0.1.
|
8
|
+
- 18
|
9
|
+
version: 0.1.18
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- David Dollar
|
@@ -16,7 +16,7 @@ autorequire:
|
|
16
16
|
bindir: bin
|
17
17
|
cert_chain: []
|
18
18
|
|
19
|
-
date: 2010-
|
19
|
+
date: 2010-09-10 00:00:00 -07:00
|
20
20
|
default_executable:
|
21
21
|
dependencies:
|
22
22
|
- !ruby/object:Gem::Dependency
|