linner 0.3.0 → 0.3.1
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.
- checksums.yaml +4 -4
- data/CHANGELOG +3 -0
- data/lib/linner.rb +1 -0
- data/lib/linner/command.rb +8 -1
- data/lib/linner/reactor.rb +84 -0
- data/lib/linner/version.rb +1 -1
- data/linner.gemspec +2 -0
- metadata +30 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1405e56164fa3e063cb261e068fbf055a372f045
|
4
|
+
data.tar.gz: e8ab5ae97989aaf34ee36b20c6d42d228303c2bc
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 38565bd77a0e75239fdf1efd0ad0badcda82528023eb3805052a5c96d1d66f35991d24f7888f9affb71bb707e583b07e082047fdfd36ec30da5394a1e9d7df16
|
7
|
+
data.tar.gz: e0193e30d872c5c4289799b63c9e6dd37f5239ca7eb2fd149185d6d45f89fabb43e3dcf6c8d361852298c50cb9288883ae4637fcbb9374bc2db07053d9e60c94
|
data/CHANGELOG
CHANGED
data/lib/linner.rb
CHANGED
data/lib/linner/command.rb
CHANGED
@@ -39,9 +39,16 @@ module Linner
|
|
39
39
|
end
|
40
40
|
@proc.call
|
41
41
|
|
42
|
-
Listen.to
|
42
|
+
Listen.to env.app_folder, env.vendor_folder, env.test_folder do |modified, added, removed|
|
43
43
|
@proc.call
|
44
44
|
end
|
45
|
+
|
46
|
+
@reactor = Reactor.supervise_as(:reactor).actors.first
|
47
|
+
Listen.to env.public_folder, relative_path: true do |modified, added, removed|
|
48
|
+
@reactor.reload_browser(modified + added + removed)
|
49
|
+
end
|
50
|
+
|
51
|
+
sleep
|
45
52
|
end
|
46
53
|
|
47
54
|
desc "clean", "clean assets"
|
@@ -0,0 +1,84 @@
|
|
1
|
+
require "reel"
|
2
|
+
require "json"
|
3
|
+
|
4
|
+
module Linner
|
5
|
+
class Reactor < Reel::Server
|
6
|
+
include Celluloid
|
7
|
+
|
8
|
+
attr_accessor :clients
|
9
|
+
|
10
|
+
def initialize(host = "127.0.0.1", port = 35729)
|
11
|
+
@clients = []
|
12
|
+
super(host, port, &method(:on_connection))
|
13
|
+
end
|
14
|
+
|
15
|
+
def on_connection(connection)
|
16
|
+
while request = connection.request
|
17
|
+
case request
|
18
|
+
when Reel::Request
|
19
|
+
route_request connection, request
|
20
|
+
when Reel::WebSocket
|
21
|
+
route_websocket request
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
def route_request(connection, request)
|
27
|
+
if request.url.start_with? "/livereload.js"
|
28
|
+
return connection.respond :ok, File.read(File.join(File.dirname(__FILE__), "../../vendor", "livereload.js"))
|
29
|
+
end
|
30
|
+
|
31
|
+
path = File.join(Linner.environment.public_folder, request.url[1..-1])
|
32
|
+
if File.exist?(path)
|
33
|
+
content_type = case File.extname(path)
|
34
|
+
when '.css' then 'text/css'
|
35
|
+
when '.js' then 'application/ecmascript'
|
36
|
+
when '.gif' then 'image/gif'
|
37
|
+
when '.jpeg', '.jpg' then 'image/jpeg'
|
38
|
+
when '.png' then 'image/png'
|
39
|
+
else; 'text/plain'
|
40
|
+
end
|
41
|
+
return connection.respond :ok, {"Content_Type" => content_type, "Content_Length" => File.size(path)}, File.read(path)
|
42
|
+
end
|
43
|
+
|
44
|
+
connection.respond :not_found, "Not found"
|
45
|
+
end
|
46
|
+
|
47
|
+
def route_websocket(socket)
|
48
|
+
socket << JSON.generate({
|
49
|
+
:command => 'hello',
|
50
|
+
:protocols => ['http://livereload.com/protocols/official-7'],
|
51
|
+
:serverName => 'reel-livereload'
|
52
|
+
})
|
53
|
+
if socket.url == "/livereload"
|
54
|
+
@clients << Client.new(socket)
|
55
|
+
else
|
56
|
+
socket.close
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
def reload_browser(paths = [])
|
61
|
+
paths.each do |path|
|
62
|
+
@clients.each {|c| c.notify_asset_change path }
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
class Client
|
67
|
+
include Celluloid
|
68
|
+
|
69
|
+
def initialize(socket)
|
70
|
+
@socket = socket
|
71
|
+
end
|
72
|
+
|
73
|
+
def notify_asset_change(path)
|
74
|
+
data = {
|
75
|
+
:path => path,
|
76
|
+
:command => 'reload',
|
77
|
+
:liveCSS => true
|
78
|
+
}
|
79
|
+
@socket << JSON.generate(data)
|
80
|
+
rescue
|
81
|
+
end
|
82
|
+
end
|
83
|
+
end
|
84
|
+
end
|
data/lib/linner/version.rb
CHANGED
data/linner.gemspec
CHANGED
@@ -18,10 +18,12 @@ Gem::Specification.new do |spec|
|
|
18
18
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
19
|
spec.require_paths = ["lib"]
|
20
20
|
|
21
|
+
spec.add_dependency "reel", "~> 0.3"
|
21
22
|
spec.add_dependency "thor", "~> 0.18"
|
22
23
|
spec.add_dependency "tilt", "~> 1.4"
|
23
24
|
spec.add_dependency "sass", "~> 3.2"
|
24
25
|
spec.add_dependency "listen", "~> 1.2"
|
26
|
+
spec.add_dependency "nio4r", "~> 0.5.0"
|
25
27
|
spec.add_dependency "uglifier", "~> 2.1"
|
26
28
|
spec.add_dependency "compass", "~> 0.12.2"
|
27
29
|
spec.add_dependency "multi_json", "~> 1.7"
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: linner
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Saito
|
@@ -10,6 +10,20 @@ bindir: bin
|
|
10
10
|
cert_chain: []
|
11
11
|
date: 2013-08-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: reel
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ~>
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0.3'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ~>
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0.3'
|
13
27
|
- !ruby/object:Gem::Dependency
|
14
28
|
name: thor
|
15
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -66,6 +80,20 @@ dependencies:
|
|
66
80
|
- - ~>
|
67
81
|
- !ruby/object:Gem::Version
|
68
82
|
version: '1.2'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: nio4r
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ~>
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: 0.5.0
|
90
|
+
type: :runtime
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ~>
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: 0.5.0
|
69
97
|
- !ruby/object:Gem::Dependency
|
70
98
|
name: uglifier
|
71
99
|
requirement: !ruby/object:Gem::Requirement
|
@@ -216,6 +244,7 @@ files:
|
|
216
244
|
- lib/linner/environment.rb
|
217
245
|
- lib/linner/helper.rb
|
218
246
|
- lib/linner/notifier.rb
|
247
|
+
- lib/linner/reactor.rb
|
219
248
|
- lib/linner/template.rb
|
220
249
|
- lib/linner/templates/app/images/.gitkeep
|
221
250
|
- lib/linner/templates/app/scripts/app.coffee
|