heroku-nav 0.1.7 → 0.1.9
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.
- data/Rakefile +1 -1
- data/heroku-nav.gemspec +3 -3
- data/lib/heroku/nav.rb +25 -11
- data/spec/api_spec.rb +2 -2
- data/spec/nav_spec.rb +34 -2
- 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.9'
|
25
25
|
end
|
26
26
|
rescue LoadError
|
27
27
|
puts "Jeweler not available. Install it with: gem install jeweler"
|
data/heroku-nav.gemspec
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
# Generated by jeweler
|
2
2
|
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
-
# Instead, edit Jeweler::Tasks in
|
3
|
+
# Instead, edit Jeweler::Tasks in rakefile, and run the gemspec command
|
4
4
|
# -*- encoding: utf-8 -*-
|
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.9"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Todd Matthews", "Pedro Belo"]
|
12
|
-
s.date = %q{2010-
|
12
|
+
s.date = %q{2010-04-13}
|
13
13
|
s.description = %q{}
|
14
14
|
s.email = %q{pedro@heroku.com}
|
15
15
|
s.files = [
|
data/lib/heroku/nav.rb
CHANGED
@@ -30,15 +30,14 @@ module Heroku
|
|
30
30
|
end
|
31
31
|
|
32
32
|
def refresh
|
33
|
-
@
|
33
|
+
@nav = self.class.fetch
|
34
34
|
end
|
35
35
|
|
36
36
|
class << self
|
37
37
|
def fetch
|
38
38
|
Timeout.timeout(4) do
|
39
|
-
raw
|
40
|
-
|
41
|
-
return attrs['html']
|
39
|
+
raw = RestClient.get(resource_url, :accept => :json)
|
40
|
+
return JSON.parse(raw)
|
42
41
|
end
|
43
42
|
rescue => e
|
44
43
|
STDERR.puts "Failed to fetch the Heroku #{resource}: #{e.class.name} - #{e.message}"
|
@@ -54,31 +53,46 @@ module Heroku
|
|
54
53
|
end
|
55
54
|
|
56
55
|
def api_url
|
57
|
-
ENV['API_URL'] || "http://nav.heroku.com"
|
56
|
+
ENV['API_URL'] || ENV['HEROKU_NAV_URL'] || "http://nav.heroku.com"
|
58
57
|
end
|
59
58
|
|
60
59
|
# for non-rack use
|
61
60
|
def html
|
62
|
-
@@body ||= fetch
|
61
|
+
@@body ||= fetch['html']
|
63
62
|
end
|
64
63
|
end
|
65
64
|
end
|
66
65
|
|
67
66
|
class Header < Base
|
68
67
|
def insert!
|
69
|
-
if @html
|
68
|
+
if @nav['html']
|
70
69
|
@body.send(@body_accessor).gsub!(/(<head>)/i, "\\1<link href='#{self.class.api_url}/header.css' media='all' rel='stylesheet' type='text/css' />")
|
71
|
-
@body.send(@body_accessor).gsub!(/(<body.*?>\s*(<div .*?class=["'].*?container.*?["'].*?>)?)/i, "\\1#{@html}")
|
70
|
+
@body.send(@body_accessor).gsub!(/(<body.*?>\s*(<div .*?class=["'].*?container.*?["'].*?>)?)/i, "\\1#{@nav['html']}")
|
71
|
+
@headers['Content-Length'] = @body.send(@body_accessor).size.to_s
|
72
72
|
end
|
73
|
-
@headers['Content-Length'] = @body.send(@body_accessor).size.to_s
|
74
73
|
end
|
75
74
|
end
|
76
75
|
|
77
76
|
class Footer < Base
|
78
77
|
def insert!
|
79
|
-
if @html
|
78
|
+
if @nav['html']
|
80
79
|
@body.send(@body_accessor).gsub!(/(<head>)/i, "\\1<link href='#{self.class.api_url}/footer.css' media='all' rel='stylesheet' type='text/css' />")
|
81
|
-
@body.send(@body_accessor).gsub!(/(<\/body>)/i, "#{@html}\\1")
|
80
|
+
@body.send(@body_accessor).gsub!(/(<\/body>)/i, "#{@nav['html']}\\1")
|
81
|
+
@headers['Content-Length'] = @body.send(@body_accessor).size.to_s
|
82
|
+
end
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
86
|
+
class Internal < Base
|
87
|
+
def self.resource
|
88
|
+
"internal.json"
|
89
|
+
end
|
90
|
+
def insert!
|
91
|
+
if @nav['head']
|
92
|
+
@body.send(@body_accessor).gsub!(/(<head>)/i, "\\1#{@nav['head']}")
|
93
|
+
end
|
94
|
+
if @nav['body'] && @options[:development]
|
95
|
+
@body.send(@body_accessor).gsub!(/(<body.*?>)/i, "\\1#{@nav['body']}")
|
82
96
|
end
|
83
97
|
@headers['Content-Length'] = @body.send(@body_accessor).size.to_s
|
84
98
|
end
|
data/spec/api_spec.rb
CHANGED
@@ -2,7 +2,7 @@ require File.dirname(__FILE__) + '/base'
|
|
2
2
|
|
3
3
|
describe "Api" do
|
4
4
|
before do
|
5
|
-
RestClient.stubs(:get).returns({
|
5
|
+
RestClient.stubs(:get).returns({ 'html' => '<!-- header -->' }.to_json)
|
6
6
|
end
|
7
7
|
|
8
8
|
it "has a resource based on the class name" do
|
@@ -20,6 +20,6 @@ describe "Api" do
|
|
20
20
|
end
|
21
21
|
|
22
22
|
it "parses the JSON response, returning the html and css" do
|
23
|
-
Heroku::Nav::Header.fetch.should == '<!-- header -->'
|
23
|
+
Heroku::Nav::Header.fetch.should == { 'html' => '<!-- header -->' }
|
24
24
|
end
|
25
25
|
end
|
data/spec/nav_spec.rb
CHANGED
@@ -2,7 +2,7 @@ require File.dirname(__FILE__) + '/base'
|
|
2
2
|
|
3
3
|
describe Heroku::Nav::Header do
|
4
4
|
before do
|
5
|
-
Heroku::Nav::Header.stubs(:fetch).returns('<!-- header -->')
|
5
|
+
Heroku::Nav::Header.stubs(:fetch).returns('html' => '<!-- header -->')
|
6
6
|
end
|
7
7
|
|
8
8
|
def app
|
@@ -69,7 +69,7 @@ end
|
|
69
69
|
|
70
70
|
describe Heroku::Nav::Footer do
|
71
71
|
before do
|
72
|
-
Heroku::Nav::Footer.stubs(:fetch).returns('<!-- footer -->')
|
72
|
+
Heroku::Nav::Footer.stubs(:fetch).returns('html' => '<!-- footer -->')
|
73
73
|
end
|
74
74
|
|
75
75
|
def app
|
@@ -86,3 +86,35 @@ describe Heroku::Nav::Footer do
|
|
86
86
|
last_response.body.should.equal "<html><head><link href='http://nav.heroku.com/footer.css' media='all' rel='stylesheet' type='text/css' />... <body>"
|
87
87
|
end
|
88
88
|
end
|
89
|
+
|
90
|
+
describe Heroku::Nav::Internal do
|
91
|
+
before do
|
92
|
+
Heroku::Nav::Internal.stubs(:fetch).returns('head' => '<!-- head -->', 'body' => '<!-- body -->')
|
93
|
+
end
|
94
|
+
|
95
|
+
def app
|
96
|
+
make_app { use Heroku::Nav::Internal }
|
97
|
+
end
|
98
|
+
|
99
|
+
it "adds the head" do
|
100
|
+
get '/', :body => '<head><title /></head><body>'
|
101
|
+
last_response.body.should.equal '<head><!-- head --><title /></head><body>'
|
102
|
+
end
|
103
|
+
|
104
|
+
it "doesn't add the body" do
|
105
|
+
get '/', :body => '<html><body>hi'
|
106
|
+
last_response.body.should.equal '<html><body>hi'
|
107
|
+
end
|
108
|
+
|
109
|
+
describe "development mode" do
|
110
|
+
def app
|
111
|
+
make_app { use Heroku::Nav::Internal, :development => true }
|
112
|
+
end
|
113
|
+
|
114
|
+
it "adds the body" do
|
115
|
+
get '/', :body => '<html><body>hi'
|
116
|
+
last_response.body.should.equal '<html><body><!-- body -->hi'
|
117
|
+
end
|
118
|
+
end
|
119
|
+
|
120
|
+
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
|
+
- 9
|
9
|
+
version: 0.1.9
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Todd Matthews
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2010-
|
18
|
+
date: 2010-04-13 00:00:00 -07:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|