middleman-livereload 3.0.1 → 3.1.0
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/.gitignore +1 -0
- data/Gemfile +2 -2
- data/README.md +29 -2
- data/lib/middleman-livereload.rb +8 -3
- data/lib/middleman-livereload/extension_3_0.rb +59 -0
- data/lib/middleman-livereload/extension_3_1.rb +63 -0
- data/lib/middleman-livereload/{extension.rb → reactor.rb} +11 -47
- data/lib/middleman-livereload/version.rb +1 -1
- data/middleman-livereload.gemspec +1 -1
- metadata +10 -8
data/.gitignore
CHANGED
data/Gemfile
CHANGED
@@ -1,6 +1,6 @@
|
|
1
|
-
source
|
1
|
+
source 'https://rubygems.org'
|
2
2
|
|
3
|
-
git "git://github.com/middleman/middleman.git", :branch => "
|
3
|
+
git "git://github.com/middleman/middleman.git", :branch => "master" do
|
4
4
|
# gem "middleman"
|
5
5
|
gem "middleman-core"
|
6
6
|
# gem "middleman-more"
|
data/README.md
CHANGED
@@ -12,12 +12,39 @@ middleman init MY_PROJECT
|
|
12
12
|
```
|
13
13
|
|
14
14
|
If you already have a Middleman project:
|
15
|
-
Add `middleman-livereload` to your `Gemfile
|
15
|
+
Add `middleman-livereload` to your `Gemfile`
|
16
|
+
```
|
17
|
+
gem "middleman-livereload", "~>3.0.1"
|
18
|
+
```
|
16
19
|
|
20
|
+
Then open your `config.rb` and add:
|
17
21
|
```
|
18
22
|
activate :livereload
|
19
23
|
```
|
20
24
|
|
25
|
+
# Configuration
|
26
|
+
|
27
|
+
The extension supports a number of options that can be given to the `activate` statement. E.g.:
|
28
|
+
```
|
29
|
+
activate :livereload, :apply_js_live => false, :grace_period => 0.5
|
30
|
+
```
|
31
|
+
|
32
|
+
## :api_version
|
33
|
+
|
34
|
+
Livereload API version, default `'1.6'`.
|
35
|
+
|
36
|
+
## :host and :port
|
37
|
+
|
38
|
+
Livereload's listener host/port, these options get passed to ::Rack::LiveReload middleware. Defaults:`'0.0.0.0'` and `'35729'`.
|
39
|
+
|
40
|
+
## :apply_js_live and :apply_css_live
|
41
|
+
|
42
|
+
Whether live reload should attempt to reload javascript / css 'in-place', without complete reload of the page. Both default to `true`.
|
43
|
+
|
44
|
+
## :grace_period
|
45
|
+
|
46
|
+
A delay middleman-livereload should wait before reacting on file change / deletion notification (sec). Default is 0.
|
47
|
+
|
21
48
|
# Community
|
22
49
|
|
23
50
|
The official community forum is available at:
|
@@ -34,4 +61,4 @@ The best way to get quick responses to your issues and swift fixes to your bugs
|
|
34
61
|
|
35
62
|
# Donate
|
36
63
|
|
37
|
-
[](http://www.pledgie.com/campaigns/15807)
|
64
|
+
[](http://www.pledgie.com/campaigns/15807)
|
data/lib/middleman-livereload.rb
CHANGED
@@ -2,6 +2,11 @@ require "middleman-core"
|
|
2
2
|
require "middleman-livereload/version"
|
3
3
|
|
4
4
|
::Middleman::Extensions.register(:livereload) do
|
5
|
-
|
6
|
-
|
7
|
-
|
5
|
+
if defined?(::Middleman::Extension)
|
6
|
+
require "middleman-livereload/extension_3_1"
|
7
|
+
::Middleman::LiveReloadExtension
|
8
|
+
else
|
9
|
+
require "middleman-livereload/extension_3_0"
|
10
|
+
::Middleman::LiveReload
|
11
|
+
end
|
12
|
+
end
|
@@ -0,0 +1,59 @@
|
|
1
|
+
require 'rack/livereload'
|
2
|
+
require 'middleman-livereload/reactor'
|
3
|
+
|
4
|
+
module Middleman
|
5
|
+
module LiveReload
|
6
|
+
class << self
|
7
|
+
@@reactor = nil
|
8
|
+
|
9
|
+
def registered(app, options={})
|
10
|
+
options = {
|
11
|
+
:api_version => '1.6',
|
12
|
+
:host => '0.0.0.0',
|
13
|
+
:port => '35729',
|
14
|
+
:apply_js_live => true,
|
15
|
+
:apply_css_live => true,
|
16
|
+
:grace_period => 0
|
17
|
+
}.merge(options)
|
18
|
+
|
19
|
+
app.ready do
|
20
|
+
# Doesn't make sense in build
|
21
|
+
if environment != :build
|
22
|
+
if @@reactor
|
23
|
+
@@reactor.app = self
|
24
|
+
else
|
25
|
+
@@reactor = Reactor.new(options, self)
|
26
|
+
end
|
27
|
+
|
28
|
+
files.changed do |file|
|
29
|
+
next if ignore_manager.ignored?(file)
|
30
|
+
|
31
|
+
sleep options[:grace_period]
|
32
|
+
sitemap.ensure_resource_list_updated!
|
33
|
+
|
34
|
+
begin
|
35
|
+
file_url = sitemap.file_to_path(file)
|
36
|
+
file_resource = sitemap.find_resource_by_path(file_url)
|
37
|
+
reload_path = file_resource.destination_path
|
38
|
+
rescue
|
39
|
+
reload_path = "#{Dir.pwd}/#{file}"
|
40
|
+
end
|
41
|
+
@@reactor.reload_browser(reload_path)
|
42
|
+
end
|
43
|
+
|
44
|
+
files.deleted do |file|
|
45
|
+
next if ignore_manager.ignored?(file)
|
46
|
+
|
47
|
+
sleep options[:grace_period]
|
48
|
+
sitemap.ensure_resource_list_updated!
|
49
|
+
@@reactor.reload_browser("#{Dir.pwd}/#{file}")
|
50
|
+
end
|
51
|
+
|
52
|
+
use ::Rack::LiveReload, :port => options[:port].to_i, :host => options[:host]
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
alias :included :registered
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
@@ -0,0 +1,63 @@
|
|
1
|
+
require 'rack/livereload'
|
2
|
+
require 'middleman-livereload/reactor'
|
3
|
+
|
4
|
+
module Middleman
|
5
|
+
class LiveReloadExtension < Extension
|
6
|
+
option :host, '0.0.0.0', 'Host to bind LiveReload API server to'
|
7
|
+
option :port, '35729', 'Port to bind the LiveReload API server to'
|
8
|
+
option :apply_js_live, true, 'Apply JS changes live, without reloading'
|
9
|
+
option :apply_css_live, true, 'Apply CSS changes live, without reloading'
|
10
|
+
option :grace_period, 0, 'Time (in seconds) to wait before reloading'
|
11
|
+
|
12
|
+
def initialize(app, options_hash={}, &block)
|
13
|
+
super
|
14
|
+
|
15
|
+
# Doesn't make sense in build
|
16
|
+
return if app.environment == :build
|
17
|
+
|
18
|
+
@reactor = nil
|
19
|
+
|
20
|
+
grace_period = options.grace_period
|
21
|
+
port = options.port.to_i
|
22
|
+
host = options.host
|
23
|
+
options_hash = options.to_h
|
24
|
+
|
25
|
+
app.ready do
|
26
|
+
if @reactor
|
27
|
+
@reactor.app = self
|
28
|
+
else
|
29
|
+
@reactor = ::Middleman::LiveReload::Reactor.new(options_hash, self)
|
30
|
+
end
|
31
|
+
|
32
|
+
files.changed do |file|
|
33
|
+
next if ignore_manager.ignored?(file)
|
34
|
+
|
35
|
+
sleep(grace_period) if grace_period > 0
|
36
|
+
sitemap.ensure_resource_list_updated!
|
37
|
+
puts "Changed! #{file}"
|
38
|
+
|
39
|
+
begin
|
40
|
+
file_url = sitemap.file_to_path(file)
|
41
|
+
file_resource = sitemap.find_resource_by_path(file_url)
|
42
|
+
reload_path = file_resource.destination_path
|
43
|
+
rescue
|
44
|
+
reload_path = "#{Dir.pwd}/#{file}"
|
45
|
+
end
|
46
|
+
@reactor.reload_browser(reload_path)
|
47
|
+
end
|
48
|
+
|
49
|
+
files.deleted do |file|
|
50
|
+
next if ignore_manager.ignored?(file)
|
51
|
+
|
52
|
+
sleep(grace_period) if grace_period > 0
|
53
|
+
sitemap.ensure_resource_list_updated!
|
54
|
+
puts "Deleted! #{file}"
|
55
|
+
|
56
|
+
@reactor.reload_browser("#{Dir.pwd}/#{file}")
|
57
|
+
end
|
58
|
+
|
59
|
+
use ::Rack::LiveReload, :port => port, :host => host
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
@@ -1,55 +1,11 @@
|
|
1
|
-
require 'rack/livereload'
|
2
1
|
require 'em-websocket'
|
3
2
|
require 'multi_json'
|
4
3
|
|
5
4
|
module Middleman
|
6
5
|
module LiveReload
|
7
|
-
class << self
|
8
|
-
def registered(app, options={})
|
9
|
-
options = {
|
10
|
-
:api_version => '1.6',
|
11
|
-
:host => '0.0.0.0',
|
12
|
-
:port => '35729',
|
13
|
-
:apply_js_live => true,
|
14
|
-
:apply_css_live => true,
|
15
|
-
:grace_period => 0
|
16
|
-
}.merge(options)
|
17
|
-
|
18
|
-
app.ready do
|
19
|
-
# Doesn't make sense in build
|
20
|
-
if environment != :build
|
21
|
-
reactor = Reactor.new(options, self)
|
22
|
-
|
23
|
-
files.changed do |file|
|
24
|
-
sitemap.ensure_resource_list_updated!
|
25
|
-
|
26
|
-
begin
|
27
|
-
file_url = sitemap.file_to_path(file)
|
28
|
-
file_resource = sitemap.find_resource_by_path(file_url)
|
29
|
-
reload_path = file_resource.destination_path
|
30
|
-
rescue
|
31
|
-
reload_path = "#{Dir.pwd}/#{file}"
|
32
|
-
end
|
33
|
-
|
34
|
-
reactor.reload_browser(reload_path)
|
35
|
-
end
|
36
|
-
|
37
|
-
files.deleted do |file|
|
38
|
-
sitemap.ensure_resource_list_updated!
|
39
|
-
reactor.reload_browser("#{Dir.pwd}/#{file}")
|
40
|
-
end
|
41
|
-
|
42
|
-
use ::Rack::LiveReload, :port => options[:port].to_i, :host => options[:host]
|
43
|
-
end
|
44
|
-
end
|
45
|
-
end
|
46
|
-
alias :included :registered
|
47
|
-
end
|
48
|
-
|
49
6
|
class Reactor
|
50
7
|
attr_reader :thread, :web_sockets, :app
|
51
|
-
|
52
|
-
|
8
|
+
|
53
9
|
def initialize(options, app)
|
54
10
|
@app = app
|
55
11
|
@web_sockets = []
|
@@ -57,6 +13,14 @@ module Middleman
|
|
57
13
|
@thread = start_threaded_reactor(options)
|
58
14
|
end
|
59
15
|
|
16
|
+
def app= app
|
17
|
+
Thread.exclusive { @app = app }
|
18
|
+
end
|
19
|
+
|
20
|
+
def logger
|
21
|
+
Thread.exclusive { @app.logger }
|
22
|
+
end
|
23
|
+
|
60
24
|
def stop
|
61
25
|
thread.kill
|
62
26
|
end
|
@@ -70,7 +34,7 @@ module Middleman
|
|
70
34
|
:apply_js_live => @options[:apply_js_live],
|
71
35
|
:apply_css_live => @options[:apply_css_live]
|
72
36
|
}])
|
73
|
-
|
37
|
+
|
74
38
|
@web_sockets.each { |ws| ws.send(data) }
|
75
39
|
end
|
76
40
|
end
|
@@ -82,7 +46,7 @@ module Middleman
|
|
82
46
|
EventMachine.start_server(options[:host], options[:port], EventMachine::WebSocket::Connection, {}) do |ws|
|
83
47
|
ws.onopen do
|
84
48
|
begin
|
85
|
-
ws.send "!!ver
|
49
|
+
ws.send "!!ver:1.6"
|
86
50
|
@web_sockets << ws
|
87
51
|
logger.debug "== LiveReload browser connected"
|
88
52
|
rescue
|
@@ -18,7 +18,7 @@ Gem::Specification.new do |s|
|
|
18
18
|
s.test_files = `git ls-files -z -- {fixtures,features}/*`.split("\0")
|
19
19
|
s.require_paths = ["lib"]
|
20
20
|
|
21
|
-
s.add_dependency("middleman-core", ["
|
21
|
+
s.add_dependency("middleman-core", [">= 3.0.2"])
|
22
22
|
s.add_runtime_dependency('rack-livereload')
|
23
23
|
s.add_runtime_dependency('em-websocket', ['>= 0.2.0'])
|
24
24
|
s.add_runtime_dependency('multi_json', ['~> 1.0'])
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: middleman-livereload
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.0
|
4
|
+
version: 3.1.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,14 +9,14 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2013-05-03 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: middleman-core
|
16
16
|
requirement: !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
|
-
- -
|
19
|
+
- - ! '>='
|
20
20
|
- !ruby/object:Gem::Version
|
21
21
|
version: 3.0.2
|
22
22
|
type: :runtime
|
@@ -24,7 +24,7 @@ dependencies:
|
|
24
24
|
version_requirements: !ruby/object:Gem::Requirement
|
25
25
|
none: false
|
26
26
|
requirements:
|
27
|
-
- -
|
27
|
+
- - ! '>='
|
28
28
|
- !ruby/object:Gem::Version
|
29
29
|
version: 3.0.2
|
30
30
|
- !ruby/object:Gem::Dependency
|
@@ -89,7 +89,9 @@ files:
|
|
89
89
|
- features/.gitkeep
|
90
90
|
- fixtures/.gitkeep
|
91
91
|
- lib/middleman-livereload.rb
|
92
|
-
- lib/middleman-livereload/
|
92
|
+
- lib/middleman-livereload/extension_3_0.rb
|
93
|
+
- lib/middleman-livereload/extension_3_1.rb
|
94
|
+
- lib/middleman-livereload/reactor.rb
|
93
95
|
- lib/middleman-livereload/version.rb
|
94
96
|
- lib/middleman_extension.rb
|
95
97
|
- middleman-livereload.gemspec
|
@@ -107,7 +109,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
107
109
|
version: '0'
|
108
110
|
segments:
|
109
111
|
- 0
|
110
|
-
hash: -
|
112
|
+
hash: -1556732277774144508
|
111
113
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
112
114
|
none: false
|
113
115
|
requirements:
|
@@ -116,10 +118,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
116
118
|
version: '0'
|
117
119
|
segments:
|
118
120
|
- 0
|
119
|
-
hash: -
|
121
|
+
hash: -1556732277774144508
|
120
122
|
requirements: []
|
121
123
|
rubyforge_project: middleman-livereload
|
122
|
-
rubygems_version: 1.8.
|
124
|
+
rubygems_version: 1.8.23
|
123
125
|
signing_key:
|
124
126
|
specification_version: 3
|
125
127
|
summary: Adds LiveReload to Middleman
|