rack-livereload 0.3.8 → 0.3.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/LICENSE +19 -0
- data/README.md +2 -4
- data/lib/rack-livereload.rb +1 -1
- data/lib/rack/livereload.rb +4 -2
- data/rack-livereload.gemspec +1 -0
- data/spec/rack/livereload_spec.rb +16 -1
- metadata +86 -69
data/LICENSE
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
Copyright © 2012 John Bintz
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
4
|
+
this software and associated documentation files (the “Software”), to deal in
|
5
|
+
the Software without restriction, including without limitation the rights to
|
6
|
+
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
|
7
|
+
of the Software, and to permit persons to whom the Software is furnished to do
|
8
|
+
so, subject to the following conditions:
|
9
|
+
|
10
|
+
The above copyright notice and this permission notice shall be included in all
|
11
|
+
copies or substantial portions of the Software.
|
12
|
+
|
13
|
+
THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
14
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
15
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
16
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
17
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
18
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
19
|
+
SOFTWARE.
|
data/README.md
CHANGED
@@ -19,7 +19,7 @@ In `config/environments/development.rb`:
|
|
19
19
|
|
20
20
|
``` ruby
|
21
21
|
MyApp::Application.configure do
|
22
|
-
config.middleware.
|
22
|
+
config.middleware.insert_after(ActionDispatch::Static, Rack::LiveReload)
|
23
23
|
|
24
24
|
# ...or, change some options...
|
25
25
|
|
@@ -47,7 +47,7 @@ use Rack::LiveReload, :min_delay => 500, ...
|
|
47
47
|
## How it works
|
48
48
|
|
49
49
|
The necessary `script` tag to bring in a copy of [livereload.js](https://github.com/livereload/livereload-js) is
|
50
|
-
injected right
|
50
|
+
injected right after the opening `head` tag in any `text/html` pages that come through. The `script` tag is built in
|
51
51
|
such a way that the `HTTP_HOST` is used as the LiveReload host, so you can connect from external machines (say, to
|
52
52
|
`mycomputer:3000` instead of `localhost:3000`) and as long as the LiveReload port is accessible from the external machine,
|
53
53
|
you'll connect and be LiveReloading away!
|
@@ -81,5 +81,3 @@ use Rack::LiveReload, :no_swf => true
|
|
81
81
|
Once more browsers support WebSockets than don't, this option will be reversed and you'll have
|
82
82
|
to explicitly include the Flash shim.
|
83
83
|
|
84
|
-
As usual, super-alpha!
|
85
|
-
|
data/lib/rack-livereload.rb
CHANGED
data/lib/rack/livereload.rb
CHANGED
@@ -61,7 +61,7 @@ module Rack
|
|
61
61
|
content_length = 0
|
62
62
|
|
63
63
|
new_body.each do |line|
|
64
|
-
if !headers['X-Rack-LiveReload'] && line['
|
64
|
+
if !headers['X-Rack-LiveReload'] && line['<head']
|
65
65
|
host_to_use = (@options[:host] || env['HTTP_HOST'] || 'localhost').gsub(%r{:.*}, '')
|
66
66
|
|
67
67
|
if use_vendored?
|
@@ -76,7 +76,9 @@ module Rack
|
|
76
76
|
|
77
77
|
template = ERB.new(::File.read(::File.expand_path('../../../skel/livereload.html.erb', __FILE__)))
|
78
78
|
|
79
|
-
line
|
79
|
+
if line['<head']
|
80
|
+
line.gsub!(/<head[^>]*>/) { |match| %{#{match}#{template.result(binding)}} }
|
81
|
+
end
|
80
82
|
|
81
83
|
headers["X-Rack-LiveReload"] = '1'
|
82
84
|
end
|
data/rack-livereload.gemspec
CHANGED
@@ -32,6 +32,7 @@ Gem::Specification.new do |s|
|
|
32
32
|
s.add_development_dependency "guard-cucumber"
|
33
33
|
s.add_development_dependency "guard-livereload"
|
34
34
|
s.add_development_dependency "webmock"
|
35
|
+
s.add_development_dependency "nokogiri"
|
35
36
|
s.add_development_dependency 'appraisal', '~> 0.4'
|
36
37
|
s.add_runtime_dependency "rack"
|
37
38
|
end
|
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'spec_helper'
|
2
|
+
require 'nokogiri'
|
2
3
|
|
3
4
|
describe Rack::LiveReload do
|
4
5
|
let(:middleware) { described_class.new(app, options) }
|
@@ -67,7 +68,7 @@ describe Rack::LiveReload do
|
|
67
68
|
|
68
69
|
context 'text/html' do
|
69
70
|
before do
|
70
|
-
app.stubs(:call).with(env).returns([ 200, { 'Content-Type' => 'text/html', 'Content-Length' => 0 }, [
|
71
|
+
app.stubs(:call).with(env).returns([ 200, { 'Content-Type' => 'text/html', 'Content-Length' => 0 }, [ page_html ] ])
|
71
72
|
middleware.stubs(:use_vendored?).returns(true)
|
72
73
|
end
|
73
74
|
|
@@ -78,6 +79,8 @@ describe Rack::LiveReload do
|
|
78
79
|
let(:body) { ret.last.join }
|
79
80
|
let(:length) { ret[1]['Content-Length'] }
|
80
81
|
|
82
|
+
let(:page_html) { '<head></head>' }
|
83
|
+
|
81
84
|
context 'vendored' do
|
82
85
|
it 'should add the vendored livereload js script tag' do
|
83
86
|
body.should include("script")
|
@@ -92,6 +95,18 @@ describe Rack::LiveReload do
|
|
92
95
|
end
|
93
96
|
end
|
94
97
|
|
98
|
+
context 'at the top of the head tag' do
|
99
|
+
let(:page_html) { '<head attribute="attribute"><script type="text/javascript" insert="first"></script><script type="text/javascript" insert="before"></script></head>' }
|
100
|
+
|
101
|
+
let(:body_dom) { Nokogiri::XML(body) }
|
102
|
+
|
103
|
+
it 'should add the livereload js script tag before all other script tags' do
|
104
|
+
body_dom.at_css("head")[:attribute].should == 'attribute'
|
105
|
+
body_dom.at_css("script:eq(4)")[:src].should include(described_class::LIVERELOAD_JS_PATH)
|
106
|
+
body_dom.at_css("script:last-child")[:insert].should == "before"
|
107
|
+
end
|
108
|
+
end
|
109
|
+
|
95
110
|
context 'not vendored' do
|
96
111
|
before do
|
97
112
|
middleware.stubs(:use_vendored?).returns(false)
|
metadata
CHANGED
@@ -1,256 +1,272 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rack-livereload
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.8
|
5
4
|
prerelease:
|
5
|
+
version: 0.3.9
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- John Bintz
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
12
|
+
date: 2012-12-05 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
|
+
version_requirements: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ! '>='
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
none: false
|
21
|
+
prerelease: false
|
15
22
|
name: rspec
|
16
23
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
24
|
requirements:
|
19
25
|
- - ! '>='
|
20
26
|
- !ruby/object:Gem::Version
|
21
27
|
version: '0'
|
28
|
+
none: false
|
22
29
|
type: :development
|
23
|
-
|
30
|
+
- !ruby/object:Gem::Dependency
|
24
31
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
32
|
requirements:
|
27
33
|
- - ! '>='
|
28
34
|
- !ruby/object:Gem::Version
|
29
35
|
version: '0'
|
30
|
-
|
36
|
+
none: false
|
37
|
+
prerelease: false
|
31
38
|
name: cucumber
|
32
39
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
40
|
requirements:
|
35
41
|
- - ! '>='
|
36
42
|
- !ruby/object:Gem::Version
|
37
43
|
version: '0'
|
44
|
+
none: false
|
38
45
|
type: :development
|
39
|
-
|
46
|
+
- !ruby/object:Gem::Dependency
|
40
47
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
48
|
requirements:
|
43
49
|
- - ! '>='
|
44
50
|
- !ruby/object:Gem::Version
|
45
51
|
version: '0'
|
46
|
-
|
52
|
+
none: false
|
53
|
+
prerelease: false
|
47
54
|
name: httparty
|
48
55
|
requirement: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
56
|
requirements:
|
51
57
|
- - ! '>='
|
52
58
|
- !ruby/object:Gem::Version
|
53
59
|
version: '0'
|
60
|
+
none: false
|
54
61
|
type: :development
|
55
|
-
|
62
|
+
- !ruby/object:Gem::Dependency
|
56
63
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
-
none: false
|
58
64
|
requirements:
|
59
65
|
- - ! '>='
|
60
66
|
- !ruby/object:Gem::Version
|
61
67
|
version: '0'
|
62
|
-
|
68
|
+
none: false
|
69
|
+
prerelease: false
|
63
70
|
name: sinatra
|
64
71
|
requirement: !ruby/object:Gem::Requirement
|
65
|
-
none: false
|
66
72
|
requirements:
|
67
73
|
- - ! '>='
|
68
74
|
- !ruby/object:Gem::Version
|
69
75
|
version: '0'
|
76
|
+
none: false
|
70
77
|
type: :development
|
71
|
-
|
78
|
+
- !ruby/object:Gem::Dependency
|
72
79
|
version_requirements: !ruby/object:Gem::Requirement
|
73
|
-
none: false
|
74
80
|
requirements:
|
75
81
|
- - ! '>='
|
76
82
|
- !ruby/object:Gem::Version
|
77
83
|
version: '0'
|
78
|
-
|
84
|
+
none: false
|
85
|
+
prerelease: false
|
79
86
|
name: shotgun
|
80
87
|
requirement: !ruby/object:Gem::Requirement
|
81
|
-
none: false
|
82
88
|
requirements:
|
83
89
|
- - ! '>='
|
84
90
|
- !ruby/object:Gem::Version
|
85
91
|
version: '0'
|
92
|
+
none: false
|
86
93
|
type: :development
|
87
|
-
|
94
|
+
- !ruby/object:Gem::Dependency
|
88
95
|
version_requirements: !ruby/object:Gem::Requirement
|
89
|
-
none: false
|
90
96
|
requirements:
|
91
97
|
- - ! '>='
|
92
98
|
- !ruby/object:Gem::Version
|
93
99
|
version: '0'
|
94
|
-
|
100
|
+
none: false
|
101
|
+
prerelease: false
|
95
102
|
name: thin
|
96
103
|
requirement: !ruby/object:Gem::Requirement
|
97
|
-
none: false
|
98
104
|
requirements:
|
99
105
|
- - ! '>='
|
100
106
|
- !ruby/object:Gem::Version
|
101
107
|
version: '0'
|
108
|
+
none: false
|
102
109
|
type: :development
|
103
|
-
|
110
|
+
- !ruby/object:Gem::Dependency
|
104
111
|
version_requirements: !ruby/object:Gem::Requirement
|
105
|
-
none: false
|
106
112
|
requirements:
|
107
113
|
- - ! '>='
|
108
114
|
- !ruby/object:Gem::Version
|
109
115
|
version: '0'
|
110
|
-
|
116
|
+
none: false
|
117
|
+
prerelease: false
|
111
118
|
name: rake
|
112
119
|
requirement: !ruby/object:Gem::Requirement
|
113
|
-
none: false
|
114
120
|
requirements:
|
115
121
|
- - ! '>='
|
116
122
|
- !ruby/object:Gem::Version
|
117
123
|
version: '0'
|
124
|
+
none: false
|
118
125
|
type: :development
|
119
|
-
|
126
|
+
- !ruby/object:Gem::Dependency
|
120
127
|
version_requirements: !ruby/object:Gem::Requirement
|
121
|
-
none: false
|
122
128
|
requirements:
|
123
129
|
- - ! '>='
|
124
130
|
- !ruby/object:Gem::Version
|
125
131
|
version: '0'
|
126
|
-
|
132
|
+
none: false
|
133
|
+
prerelease: false
|
127
134
|
name: mocha
|
128
135
|
requirement: !ruby/object:Gem::Requirement
|
129
|
-
none: false
|
130
136
|
requirements:
|
131
137
|
- - ! '>='
|
132
138
|
- !ruby/object:Gem::Version
|
133
139
|
version: '0'
|
140
|
+
none: false
|
134
141
|
type: :development
|
135
|
-
|
142
|
+
- !ruby/object:Gem::Dependency
|
136
143
|
version_requirements: !ruby/object:Gem::Requirement
|
137
|
-
none: false
|
138
144
|
requirements:
|
139
145
|
- - ! '>='
|
140
146
|
- !ruby/object:Gem::Version
|
141
147
|
version: '0'
|
142
|
-
|
148
|
+
none: false
|
149
|
+
prerelease: false
|
143
150
|
name: guard
|
144
151
|
requirement: !ruby/object:Gem::Requirement
|
145
|
-
none: false
|
146
152
|
requirements:
|
147
153
|
- - ! '>='
|
148
154
|
- !ruby/object:Gem::Version
|
149
155
|
version: '0'
|
156
|
+
none: false
|
150
157
|
type: :development
|
151
|
-
|
158
|
+
- !ruby/object:Gem::Dependency
|
152
159
|
version_requirements: !ruby/object:Gem::Requirement
|
153
|
-
none: false
|
154
160
|
requirements:
|
155
161
|
- - ! '>='
|
156
162
|
- !ruby/object:Gem::Version
|
157
163
|
version: '0'
|
158
|
-
|
164
|
+
none: false
|
165
|
+
prerelease: false
|
159
166
|
name: guard-rspec
|
160
167
|
requirement: !ruby/object:Gem::Requirement
|
161
|
-
none: false
|
162
168
|
requirements:
|
163
169
|
- - ! '>='
|
164
170
|
- !ruby/object:Gem::Version
|
165
171
|
version: '0'
|
172
|
+
none: false
|
166
173
|
type: :development
|
167
|
-
|
174
|
+
- !ruby/object:Gem::Dependency
|
168
175
|
version_requirements: !ruby/object:Gem::Requirement
|
169
|
-
none: false
|
170
176
|
requirements:
|
171
177
|
- - ! '>='
|
172
178
|
- !ruby/object:Gem::Version
|
173
179
|
version: '0'
|
174
|
-
|
180
|
+
none: false
|
181
|
+
prerelease: false
|
175
182
|
name: guard-cucumber
|
176
183
|
requirement: !ruby/object:Gem::Requirement
|
177
|
-
none: false
|
178
184
|
requirements:
|
179
185
|
- - ! '>='
|
180
186
|
- !ruby/object:Gem::Version
|
181
187
|
version: '0'
|
188
|
+
none: false
|
182
189
|
type: :development
|
183
|
-
|
190
|
+
- !ruby/object:Gem::Dependency
|
184
191
|
version_requirements: !ruby/object:Gem::Requirement
|
185
|
-
none: false
|
186
192
|
requirements:
|
187
193
|
- - ! '>='
|
188
194
|
- !ruby/object:Gem::Version
|
189
195
|
version: '0'
|
190
|
-
|
196
|
+
none: false
|
197
|
+
prerelease: false
|
191
198
|
name: guard-livereload
|
192
199
|
requirement: !ruby/object:Gem::Requirement
|
193
|
-
none: false
|
194
200
|
requirements:
|
195
201
|
- - ! '>='
|
196
202
|
- !ruby/object:Gem::Version
|
197
203
|
version: '0'
|
204
|
+
none: false
|
198
205
|
type: :development
|
199
|
-
|
206
|
+
- !ruby/object:Gem::Dependency
|
200
207
|
version_requirements: !ruby/object:Gem::Requirement
|
201
|
-
none: false
|
202
208
|
requirements:
|
203
209
|
- - ! '>='
|
204
210
|
- !ruby/object:Gem::Version
|
205
211
|
version: '0'
|
206
|
-
|
212
|
+
none: false
|
213
|
+
prerelease: false
|
207
214
|
name: webmock
|
208
215
|
requirement: !ruby/object:Gem::Requirement
|
209
|
-
none: false
|
210
216
|
requirements:
|
211
217
|
- - ! '>='
|
212
218
|
- !ruby/object:Gem::Version
|
213
219
|
version: '0'
|
220
|
+
none: false
|
214
221
|
type: :development
|
215
|
-
|
222
|
+
- !ruby/object:Gem::Dependency
|
216
223
|
version_requirements: !ruby/object:Gem::Requirement
|
217
|
-
none: false
|
218
224
|
requirements:
|
219
225
|
- - ! '>='
|
220
226
|
- !ruby/object:Gem::Version
|
221
227
|
version: '0'
|
222
|
-
|
223
|
-
|
228
|
+
none: false
|
229
|
+
prerelease: false
|
230
|
+
name: nokogiri
|
224
231
|
requirement: !ruby/object:Gem::Requirement
|
232
|
+
requirements:
|
233
|
+
- - ! '>='
|
234
|
+
- !ruby/object:Gem::Version
|
235
|
+
version: '0'
|
225
236
|
none: false
|
237
|
+
type: :development
|
238
|
+
- !ruby/object:Gem::Dependency
|
239
|
+
version_requirements: !ruby/object:Gem::Requirement
|
226
240
|
requirements:
|
227
241
|
- - ~>
|
228
242
|
- !ruby/object:Gem::Version
|
229
243
|
version: '0.4'
|
230
|
-
type: :development
|
231
|
-
prerelease: false
|
232
|
-
version_requirements: !ruby/object:Gem::Requirement
|
233
244
|
none: false
|
245
|
+
prerelease: false
|
246
|
+
name: appraisal
|
247
|
+
requirement: !ruby/object:Gem::Requirement
|
234
248
|
requirements:
|
235
249
|
- - ~>
|
236
250
|
- !ruby/object:Gem::Version
|
237
251
|
version: '0.4'
|
238
|
-
- !ruby/object:Gem::Dependency
|
239
|
-
name: rack
|
240
|
-
requirement: !ruby/object:Gem::Requirement
|
241
252
|
none: false
|
253
|
+
type: :development
|
254
|
+
- !ruby/object:Gem::Dependency
|
255
|
+
version_requirements: !ruby/object:Gem::Requirement
|
242
256
|
requirements:
|
243
257
|
- - ! '>='
|
244
258
|
- !ruby/object:Gem::Version
|
245
259
|
version: '0'
|
246
|
-
type: :runtime
|
247
|
-
prerelease: false
|
248
|
-
version_requirements: !ruby/object:Gem::Requirement
|
249
260
|
none: false
|
261
|
+
prerelease: false
|
262
|
+
name: rack
|
263
|
+
requirement: !ruby/object:Gem::Requirement
|
250
264
|
requirements:
|
251
265
|
- - ! '>='
|
252
266
|
- !ruby/object:Gem::Version
|
253
267
|
version: '0'
|
268
|
+
none: false
|
269
|
+
type: :runtime
|
254
270
|
description: Insert LiveReload into your app easily as Rack middleware
|
255
271
|
email:
|
256
272
|
- john@coswellproductions.com
|
@@ -263,6 +279,7 @@ files:
|
|
263
279
|
- Appraisals
|
264
280
|
- Gemfile
|
265
281
|
- Guardfile
|
282
|
+
- LICENSE
|
266
283
|
- README.md
|
267
284
|
- Rakefile
|
268
285
|
- config.ru
|
@@ -295,26 +312,26 @@ rdoc_options: []
|
|
295
312
|
require_paths:
|
296
313
|
- lib
|
297
314
|
required_ruby_version: !ruby/object:Gem::Requirement
|
298
|
-
none: false
|
299
315
|
requirements:
|
300
316
|
- - ! '>='
|
301
317
|
- !ruby/object:Gem::Version
|
302
318
|
version: '0'
|
303
319
|
segments:
|
304
320
|
- 0
|
305
|
-
hash: -
|
306
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
321
|
+
hash: -4083395389572261075
|
307
322
|
none: false
|
323
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
308
324
|
requirements:
|
309
325
|
- - ! '>='
|
310
326
|
- !ruby/object:Gem::Version
|
311
327
|
version: '0'
|
312
328
|
segments:
|
313
329
|
- 0
|
314
|
-
hash: -
|
330
|
+
hash: -4083395389572261075
|
331
|
+
none: false
|
315
332
|
requirements: []
|
316
333
|
rubyforge_project: rack-livereload
|
317
|
-
rubygems_version: 1.8.
|
334
|
+
rubygems_version: 1.8.24
|
318
335
|
signing_key:
|
319
336
|
specification_version: 3
|
320
337
|
summary: Insert LiveReload into your app easily as Rack middleware
|