rack-livereload 0.3.3 → 0.3.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.
- data/Guardfile +8 -3
- data/Rakefile +5 -1
- data/features/skip_certain_browsers.feature +11 -0
- data/features/step_definitions/given/i_have_a_rack_app_with_live_reload.rb +7 -0
- data/features/step_definitions/then/i_should_not_have_livereload_code.rb +4 -0
- data/features/step_definitions/when/i_make_a_request_with_headers.rb +6 -0
- data/features/support/env.rb +3 -0
- data/index.html +1 -1
- data/lib/rack-livereload.rb +1 -1
- data/lib/rack/livereload.rb +14 -6
- data/rack-livereload.gemspec +2 -0
- data/spec/rack/livereload_spec.rb +32 -0
- metadata +61 -29
data/Guardfile
CHANGED
@@ -1,7 +1,7 @@
|
|
1
|
-
# A sample Guardfile
|
2
|
-
# More info at https://github.com/guard/guard#readme
|
1
|
+
# A sample Guardfile
|
2
|
+
# More info at https://github.com/guard/guard#readme
|
3
3
|
|
4
|
-
guard 'rspec', :version => 2 do
|
4
|
+
guard 'rspec', :version => 2, :cli => '-c' do
|
5
5
|
watch(%r{^spec/.+_spec\.rb$})
|
6
6
|
watch(%r{^lib/(.+)\.rb$}) { |m| "spec/#{m[1]}_spec.rb" }
|
7
7
|
watch('spec/spec_helper.rb') { "spec" }
|
@@ -10,3 +10,8 @@ end
|
|
10
10
|
guard 'livereload' do
|
11
11
|
watch('index.html')
|
12
12
|
end
|
13
|
+
|
14
|
+
guard 'cucumber' do
|
15
|
+
watch(%r{^features/.+\.feature$})
|
16
|
+
watch(%r{^features/support/.+$}) { 'features' }
|
17
|
+
end
|
data/Rakefile
CHANGED
@@ -0,0 +1,11 @@
|
|
1
|
+
Feature: Skip Certain Browsers
|
2
|
+
Scenario Outline:
|
3
|
+
Given I have a Rack app with Rack::LiveReload
|
4
|
+
When I make a request to "/" with the following headers:
|
5
|
+
| HTTP_USER_AGENT | <user agent> |
|
6
|
+
Then I should not have any Rack::LiveReload code
|
7
|
+
|
8
|
+
Scenarios: Browsers to check for
|
9
|
+
| user agent |
|
10
|
+
| MSIE |
|
11
|
+
|
data/index.html
CHANGED
@@ -1,2 +1,2 @@
|
|
1
1
|
<html>
|
2
|
-
<head><title>Hi</title></head><body>
|
2
|
+
<head><title>Hi</title></head><body>Rats</body></html>
|
data/lib/rack-livereload.rb
CHANGED
data/lib/rack/livereload.rb
CHANGED
@@ -5,11 +5,12 @@ module Rack
|
|
5
5
|
LIVERELOAD_JS_PATH = '/__rack/livereload.js'
|
6
6
|
LIVERELOAD_LOCAL_URI = 'http://localhost:35729/livereload.js'
|
7
7
|
|
8
|
+
BAD_USER_AGENTS = [ %r{MSIE} ]
|
9
|
+
|
8
10
|
attr_reader :app
|
9
11
|
|
10
12
|
def initialize(app, options = {})
|
11
|
-
@app = app
|
12
|
-
@options = options
|
13
|
+
@app, @options = app, options
|
13
14
|
end
|
14
15
|
|
15
16
|
def use_vendored?
|
@@ -48,9 +49,8 @@ module Rack
|
|
48
49
|
else
|
49
50
|
status, headers, body = @app.call(env)
|
50
51
|
|
51
|
-
if
|
52
|
-
|
53
|
-
when %r{text/html}
|
52
|
+
if !ignored?(env['PATH_INFO']) && !bad_browser?(env['HTTP_USER_AGENT'])
|
53
|
+
if headers['Content-Type'] && headers['Content-Type'][%r{text/html}]
|
54
54
|
content_length = 0
|
55
55
|
|
56
56
|
body.each do |line|
|
@@ -74,7 +74,7 @@ module Rack
|
|
74
74
|
headers["X-Rack-LiveReload"] = '1'
|
75
75
|
end
|
76
76
|
|
77
|
-
content_length += line.
|
77
|
+
content_length += line.bytesize
|
78
78
|
end
|
79
79
|
|
80
80
|
headers['Content-Length'] = content_length.to_s
|
@@ -85,6 +85,14 @@ module Rack
|
|
85
85
|
end
|
86
86
|
end
|
87
87
|
|
88
|
+
def ignored?(path_info)
|
89
|
+
@options[:ignore] and @options[:ignore].any? { |filter| path_info[filter] }
|
90
|
+
end
|
91
|
+
|
92
|
+
def bad_browser?(user_agent)
|
93
|
+
BAD_USER_AGENTS.any? { |pattern| (user_agent || '')[pattern] }
|
94
|
+
end
|
95
|
+
|
88
96
|
private
|
89
97
|
def deliver_file(file)
|
90
98
|
type = case ::File.extname(file)
|
data/rack-livereload.gemspec
CHANGED
@@ -20,6 +20,7 @@ Gem::Specification.new do |s|
|
|
20
20
|
|
21
21
|
# specify any dependencies here; for example:
|
22
22
|
s.add_development_dependency "rspec"
|
23
|
+
s.add_development_dependency "cucumber"
|
23
24
|
s.add_development_dependency "httparty"
|
24
25
|
s.add_development_dependency "sinatra"
|
25
26
|
s.add_development_dependency "shotgun"
|
@@ -28,6 +29,7 @@ Gem::Specification.new do |s|
|
|
28
29
|
s.add_development_dependency "mocha"
|
29
30
|
s.add_development_dependency "guard"
|
30
31
|
s.add_development_dependency "guard-rspec"
|
32
|
+
s.add_development_dependency "guard-cucumber"
|
31
33
|
s.add_development_dependency "guard-livereload"
|
32
34
|
s.add_development_dependency "webmock"
|
33
35
|
|
@@ -53,6 +53,18 @@ describe Rack::LiveReload do
|
|
53
53
|
end
|
54
54
|
end
|
55
55
|
|
56
|
+
context 'unknown Content-Type' do
|
57
|
+
let(:ret) { [ 200, {}, [ 'hey ho' ] ] }
|
58
|
+
|
59
|
+
before do
|
60
|
+
app.stubs(:call).with(env).returns(ret)
|
61
|
+
end
|
62
|
+
|
63
|
+
it 'should not break' do
|
64
|
+
middleware.call(env).should_not raise_error(NoMethodError, /You have a nil object/)
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
56
68
|
context 'text/html' do
|
57
69
|
before do
|
58
70
|
app.stubs(:call).with(env).returns([ 200, { 'Content-Type' => 'text/html', 'Content-Length' => 0 }, [ '<head></head>' ] ])
|
@@ -165,5 +177,25 @@ describe Rack::LiveReload do
|
|
165
177
|
middleware.call(env).should be_true
|
166
178
|
end
|
167
179
|
end
|
180
|
+
|
181
|
+
describe '#ignored?' do
|
182
|
+
let(:path_info) { 'path info' }
|
183
|
+
|
184
|
+
context 'no ignore set' do
|
185
|
+
it { should_not be_ignored(path_info) }
|
186
|
+
end
|
187
|
+
|
188
|
+
context 'ignore set' do
|
189
|
+
let(:options) { { :ignore => [ %r{#{path_info}} ] } }
|
190
|
+
|
191
|
+
it { should be_ignored(path_info) }
|
192
|
+
end
|
193
|
+
end
|
194
|
+
|
195
|
+
describe '#bad_browser?' do
|
196
|
+
let(:user_agent) { described_class::BAD_USER_AGENTS.first.source }
|
197
|
+
|
198
|
+
it { should be_bad_browser(user_agent) }
|
199
|
+
end
|
168
200
|
end
|
169
201
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rack-livereload
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.4
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2012-01-24 00:00:00.000000000Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rspec
|
16
|
-
requirement: &
|
16
|
+
requirement: &2159654600 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,21 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :development
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *2159654600
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: cucumber
|
27
|
+
requirement: &2159654080 !ruby/object:Gem::Requirement
|
28
|
+
none: false
|
29
|
+
requirements:
|
30
|
+
- - ! '>='
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '0'
|
33
|
+
type: :development
|
34
|
+
prerelease: false
|
35
|
+
version_requirements: *2159654080
|
25
36
|
- !ruby/object:Gem::Dependency
|
26
37
|
name: httparty
|
27
|
-
requirement: &
|
38
|
+
requirement: &2159653540 !ruby/object:Gem::Requirement
|
28
39
|
none: false
|
29
40
|
requirements:
|
30
41
|
- - ! '>='
|
@@ -32,10 +43,10 @@ dependencies:
|
|
32
43
|
version: '0'
|
33
44
|
type: :development
|
34
45
|
prerelease: false
|
35
|
-
version_requirements: *
|
46
|
+
version_requirements: *2159653540
|
36
47
|
- !ruby/object:Gem::Dependency
|
37
48
|
name: sinatra
|
38
|
-
requirement: &
|
49
|
+
requirement: &2159652960 !ruby/object:Gem::Requirement
|
39
50
|
none: false
|
40
51
|
requirements:
|
41
52
|
- - ! '>='
|
@@ -43,10 +54,10 @@ dependencies:
|
|
43
54
|
version: '0'
|
44
55
|
type: :development
|
45
56
|
prerelease: false
|
46
|
-
version_requirements: *
|
57
|
+
version_requirements: *2159652960
|
47
58
|
- !ruby/object:Gem::Dependency
|
48
59
|
name: shotgun
|
49
|
-
requirement: &
|
60
|
+
requirement: &2159651760 !ruby/object:Gem::Requirement
|
50
61
|
none: false
|
51
62
|
requirements:
|
52
63
|
- - ! '>='
|
@@ -54,10 +65,10 @@ dependencies:
|
|
54
65
|
version: '0'
|
55
66
|
type: :development
|
56
67
|
prerelease: false
|
57
|
-
version_requirements: *
|
68
|
+
version_requirements: *2159651760
|
58
69
|
- !ruby/object:Gem::Dependency
|
59
70
|
name: thin
|
60
|
-
requirement: &
|
71
|
+
requirement: &2159650780 !ruby/object:Gem::Requirement
|
61
72
|
none: false
|
62
73
|
requirements:
|
63
74
|
- - ! '>='
|
@@ -65,10 +76,10 @@ dependencies:
|
|
65
76
|
version: '0'
|
66
77
|
type: :development
|
67
78
|
prerelease: false
|
68
|
-
version_requirements: *
|
79
|
+
version_requirements: *2159650780
|
69
80
|
- !ruby/object:Gem::Dependency
|
70
81
|
name: rake
|
71
|
-
requirement: &
|
82
|
+
requirement: &2159650360 !ruby/object:Gem::Requirement
|
72
83
|
none: false
|
73
84
|
requirements:
|
74
85
|
- - ! '>='
|
@@ -76,10 +87,10 @@ dependencies:
|
|
76
87
|
version: '0'
|
77
88
|
type: :development
|
78
89
|
prerelease: false
|
79
|
-
version_requirements: *
|
90
|
+
version_requirements: *2159650360
|
80
91
|
- !ruby/object:Gem::Dependency
|
81
92
|
name: mocha
|
82
|
-
requirement: &
|
93
|
+
requirement: &2159649820 !ruby/object:Gem::Requirement
|
83
94
|
none: false
|
84
95
|
requirements:
|
85
96
|
- - ! '>='
|
@@ -87,10 +98,10 @@ dependencies:
|
|
87
98
|
version: '0'
|
88
99
|
type: :development
|
89
100
|
prerelease: false
|
90
|
-
version_requirements: *
|
101
|
+
version_requirements: *2159649820
|
91
102
|
- !ruby/object:Gem::Dependency
|
92
103
|
name: guard
|
93
|
-
requirement: &
|
104
|
+
requirement: &2159649400 !ruby/object:Gem::Requirement
|
94
105
|
none: false
|
95
106
|
requirements:
|
96
107
|
- - ! '>='
|
@@ -98,10 +109,21 @@ dependencies:
|
|
98
109
|
version: '0'
|
99
110
|
type: :development
|
100
111
|
prerelease: false
|
101
|
-
version_requirements: *
|
112
|
+
version_requirements: *2159649400
|
102
113
|
- !ruby/object:Gem::Dependency
|
103
114
|
name: guard-rspec
|
104
|
-
requirement: &
|
115
|
+
requirement: &2159648980 !ruby/object:Gem::Requirement
|
116
|
+
none: false
|
117
|
+
requirements:
|
118
|
+
- - ! '>='
|
119
|
+
- !ruby/object:Gem::Version
|
120
|
+
version: '0'
|
121
|
+
type: :development
|
122
|
+
prerelease: false
|
123
|
+
version_requirements: *2159648980
|
124
|
+
- !ruby/object:Gem::Dependency
|
125
|
+
name: guard-cucumber
|
126
|
+
requirement: &2159648540 !ruby/object:Gem::Requirement
|
105
127
|
none: false
|
106
128
|
requirements:
|
107
129
|
- - ! '>='
|
@@ -109,10 +131,10 @@ dependencies:
|
|
109
131
|
version: '0'
|
110
132
|
type: :development
|
111
133
|
prerelease: false
|
112
|
-
version_requirements: *
|
134
|
+
version_requirements: *2159648540
|
113
135
|
- !ruby/object:Gem::Dependency
|
114
136
|
name: guard-livereload
|
115
|
-
requirement: &
|
137
|
+
requirement: &2159647940 !ruby/object:Gem::Requirement
|
116
138
|
none: false
|
117
139
|
requirements:
|
118
140
|
- - ! '>='
|
@@ -120,10 +142,10 @@ dependencies:
|
|
120
142
|
version: '0'
|
121
143
|
type: :development
|
122
144
|
prerelease: false
|
123
|
-
version_requirements: *
|
145
|
+
version_requirements: *2159647940
|
124
146
|
- !ruby/object:Gem::Dependency
|
125
147
|
name: webmock
|
126
|
-
requirement: &
|
148
|
+
requirement: &2159647400 !ruby/object:Gem::Requirement
|
127
149
|
none: false
|
128
150
|
requirements:
|
129
151
|
- - ! '>='
|
@@ -131,10 +153,10 @@ dependencies:
|
|
131
153
|
version: '0'
|
132
154
|
type: :development
|
133
155
|
prerelease: false
|
134
|
-
version_requirements: *
|
156
|
+
version_requirements: *2159647400
|
135
157
|
- !ruby/object:Gem::Dependency
|
136
158
|
name: rack
|
137
|
-
requirement: &
|
159
|
+
requirement: &2159646740 !ruby/object:Gem::Requirement
|
138
160
|
none: false
|
139
161
|
requirements:
|
140
162
|
- - ! '>='
|
@@ -142,7 +164,7 @@ dependencies:
|
|
142
164
|
version: '0'
|
143
165
|
type: :runtime
|
144
166
|
prerelease: false
|
145
|
-
version_requirements: *
|
167
|
+
version_requirements: *2159646740
|
146
168
|
description: Insert LiveReload into your app easily as Rack middleware
|
147
169
|
email:
|
148
170
|
- john@coswellproductions.com
|
@@ -156,6 +178,11 @@ files:
|
|
156
178
|
- README.md
|
157
179
|
- Rakefile
|
158
180
|
- config.ru
|
181
|
+
- features/skip_certain_browsers.feature
|
182
|
+
- features/step_definitions/given/i_have_a_rack_app_with_live_reload.rb
|
183
|
+
- features/step_definitions/then/i_should_not_have_livereload_code.rb
|
184
|
+
- features/step_definitions/when/i_make_a_request_with_headers.rb
|
185
|
+
- features/support/env.rb
|
159
186
|
- index.html
|
160
187
|
- js/WebSocketMain.swf
|
161
188
|
- js/livereload.js
|
@@ -181,7 +208,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
181
208
|
version: '0'
|
182
209
|
segments:
|
183
210
|
- 0
|
184
|
-
hash:
|
211
|
+
hash: 1893206504661372736
|
185
212
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
186
213
|
none: false
|
187
214
|
requirements:
|
@@ -190,13 +217,18 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
190
217
|
version: '0'
|
191
218
|
segments:
|
192
219
|
- 0
|
193
|
-
hash:
|
220
|
+
hash: 1893206504661372736
|
194
221
|
requirements: []
|
195
222
|
rubyforge_project: rack-livereload
|
196
|
-
rubygems_version: 1.8.
|
223
|
+
rubygems_version: 1.8.15
|
197
224
|
signing_key:
|
198
225
|
specification_version: 3
|
199
226
|
summary: Insert LiveReload into your app easily as Rack middleware
|
200
227
|
test_files:
|
228
|
+
- features/skip_certain_browsers.feature
|
229
|
+
- features/step_definitions/given/i_have_a_rack_app_with_live_reload.rb
|
230
|
+
- features/step_definitions/then/i_should_not_have_livereload_code.rb
|
231
|
+
- features/step_definitions/when/i_make_a_request_with_headers.rb
|
232
|
+
- features/support/env.rb
|
201
233
|
- spec/rack/livereload_spec.rb
|
202
234
|
- spec/spec_helper.rb
|