linner 0.1.2 → 0.1.3
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/lib/linner.rb +0 -1
- data/lib/linner/command.rb +5 -15
- data/lib/linner/version.rb +1 -1
- data/linner.gemspec +0 -2
- metadata +2 -31
- data/lib/linner/reactor.rb +0 -101
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 59bef00386f78c40d3d65b73210508c6655fa56d
|
4
|
+
data.tar.gz: b64d9317df2b2c194bd9706d180df5fb10bfd0f6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d603e4a09eb95a9216a2bbb45053b8b793a269217ccc4c1d0fc4170d0806145fbf5505abbbc0114e1fe71194c3c58a769f83c241237bfe86b8e3e62c0309c360
|
7
|
+
data.tar.gz: 4f7dc261117e786f902800ee729668eefb9b428abf4d25f4ec48a10cabffb68efbb5ce868798920136c5b5e32bb795ee7351e5190dba206137b50fd0cf52e692
|
data/lib/linner.rb
CHANGED
data/lib/linner/command.rb
CHANGED
@@ -18,7 +18,10 @@ module Linner
|
|
18
18
|
|
19
19
|
desc "watch", "watch assets"
|
20
20
|
def watch
|
21
|
-
|
21
|
+
trap :INT do
|
22
|
+
Notifier.exit
|
23
|
+
exit!
|
24
|
+
end
|
22
25
|
|
23
26
|
@proc = Proc.new do |modified, added, removed|
|
24
27
|
begin
|
@@ -29,22 +32,9 @@ module Linner
|
|
29
32
|
end
|
30
33
|
@proc.call
|
31
34
|
|
32
|
-
Listen.to env.app_folder, env.vendor_folder, env.test_folder do |modified, added, removed|
|
35
|
+
Listen.to! env.app_folder, env.vendor_folder, env.test_folder do |modified, added, removed|
|
33
36
|
@proc.call
|
34
37
|
end
|
35
|
-
|
36
|
-
Listen.to env.public_folder, :relative_paths => true do |modified, added, removed|
|
37
|
-
paths = [].push(modified, added, removed).flatten.compact
|
38
|
-
@reactor.reload_browser(paths)
|
39
|
-
end
|
40
|
-
|
41
|
-
trap :INT do
|
42
|
-
Notifier.exit
|
43
|
-
@reactor.stop
|
44
|
-
exit!
|
45
|
-
end
|
46
|
-
|
47
|
-
sleep
|
48
38
|
end
|
49
39
|
|
50
40
|
desc "clean", "clean assets"
|
data/lib/linner/version.rb
CHANGED
data/linner.gemspec
CHANGED
@@ -24,8 +24,6 @@ Gem::Specification.new do |spec|
|
|
24
24
|
spec.add_dependency "listen", "~> 1.2"
|
25
25
|
spec.add_dependency "uglifier", "~> 2.1"
|
26
26
|
spec.add_dependency "multi_json", "~> 1.7"
|
27
|
-
spec.add_dependency "em-websocket", "~> 0.5"
|
28
|
-
spec.add_dependency "eventmachine", "~> 1.0.3"
|
29
27
|
spec.add_dependency "coffee-script", "~> 2.2"
|
30
28
|
spec.add_dependency "yui-compressor", "~> 0.9.6"
|
31
29
|
spec.add_dependency "terminal-notifier", "~> 1.4"
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: linner
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Saito
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-07-
|
11
|
+
date: 2013-07-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: thor
|
@@ -94,34 +94,6 @@ dependencies:
|
|
94
94
|
- - ~>
|
95
95
|
- !ruby/object:Gem::Version
|
96
96
|
version: '1.7'
|
97
|
-
- !ruby/object:Gem::Dependency
|
98
|
-
name: em-websocket
|
99
|
-
requirement: !ruby/object:Gem::Requirement
|
100
|
-
requirements:
|
101
|
-
- - ~>
|
102
|
-
- !ruby/object:Gem::Version
|
103
|
-
version: '0.5'
|
104
|
-
type: :runtime
|
105
|
-
prerelease: false
|
106
|
-
version_requirements: !ruby/object:Gem::Requirement
|
107
|
-
requirements:
|
108
|
-
- - ~>
|
109
|
-
- !ruby/object:Gem::Version
|
110
|
-
version: '0.5'
|
111
|
-
- !ruby/object:Gem::Dependency
|
112
|
-
name: eventmachine
|
113
|
-
requirement: !ruby/object:Gem::Requirement
|
114
|
-
requirements:
|
115
|
-
- - ~>
|
116
|
-
- !ruby/object:Gem::Version
|
117
|
-
version: 1.0.3
|
118
|
-
type: :runtime
|
119
|
-
prerelease: false
|
120
|
-
version_requirements: !ruby/object:Gem::Requirement
|
121
|
-
requirements:
|
122
|
-
- - ~>
|
123
|
-
- !ruby/object:Gem::Version
|
124
|
-
version: 1.0.3
|
125
97
|
- !ruby/object:Gem::Dependency
|
126
98
|
name: coffee-script
|
127
99
|
requirement: !ruby/object:Gem::Requirement
|
@@ -229,7 +201,6 @@ files:
|
|
229
201
|
- lib/linner/environment.rb
|
230
202
|
- lib/linner/helper.rb
|
231
203
|
- lib/linner/notifier.rb
|
232
|
-
- lib/linner/reactor.rb
|
233
204
|
- lib/linner/template.rb
|
234
205
|
- lib/linner/templates/app/images/.gitkeep
|
235
206
|
- lib/linner/templates/app/scripts/app.coffee
|
data/lib/linner/reactor.rb
DELETED
@@ -1,101 +0,0 @@
|
|
1
|
-
require "eventmachine"
|
2
|
-
require "em-websocket"
|
3
|
-
require "http/parser"
|
4
|
-
|
5
|
-
module Linner
|
6
|
-
# Steal from guard livereload
|
7
|
-
# https://github.com/guard/guard-livereload/blob/master/lib/guard/livereload/reactor.rb
|
8
|
-
class Reactor
|
9
|
-
OPTIONS = {
|
10
|
-
:host => '0.0.0.0',
|
11
|
-
:port => '35729',
|
12
|
-
:apply_css_live => true,
|
13
|
-
:override_url => false,
|
14
|
-
:grace_period => 0
|
15
|
-
}
|
16
|
-
|
17
|
-
attr_reader :web_sockets, :thread, :options
|
18
|
-
|
19
|
-
def initialize
|
20
|
-
@web_sockets = []
|
21
|
-
@options = OPTIONS
|
22
|
-
@thread = start_threaded_reactor(OPTIONS)
|
23
|
-
end
|
24
|
-
|
25
|
-
def stop
|
26
|
-
thread.kill
|
27
|
-
end
|
28
|
-
|
29
|
-
def reload_browser(paths = [])
|
30
|
-
paths.each do |path|
|
31
|
-
data = {
|
32
|
-
:command => 'reload',
|
33
|
-
:path => "/#{path}",
|
34
|
-
:liveCSS => @options[:apply_css_live]
|
35
|
-
}
|
36
|
-
web_sockets.each { |ws| ws.send(MultiJson.encode(data)) }
|
37
|
-
end
|
38
|
-
end
|
39
|
-
|
40
|
-
private
|
41
|
-
|
42
|
-
def start_threaded_reactor(options)
|
43
|
-
Thread.new do
|
44
|
-
EventMachine.epoll
|
45
|
-
EventMachine.run do
|
46
|
-
EventMachine.start_server(options[:host], options[:port], Connection, {}) do |ws|
|
47
|
-
ws.onopen do
|
48
|
-
begin
|
49
|
-
ws.send MultiJson.encode({
|
50
|
-
:command => 'hello',
|
51
|
-
:protocols => ['http://livereload.com/protocols/official-7'],
|
52
|
-
:serverName => 'guard-livereload'
|
53
|
-
})
|
54
|
-
@web_sockets << ws
|
55
|
-
rescue
|
56
|
-
Notifier.error $!
|
57
|
-
end
|
58
|
-
end
|
59
|
-
|
60
|
-
ws.onclose do
|
61
|
-
@web_sockets.delete(ws)
|
62
|
-
end
|
63
|
-
end
|
64
|
-
end
|
65
|
-
end
|
66
|
-
end
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
class Connection < EventMachine::WebSocket::Connection
|
71
|
-
def dispatch data
|
72
|
-
parser = Http::Parser.new
|
73
|
-
parser << data
|
74
|
-
if parser.http_method != 'GET' || parser.upgrade?
|
75
|
-
super #pass the request to websocket
|
76
|
-
elsif parser.request_path == '/livereload.js'
|
77
|
-
serve_file File.join(File.dirname(__FILE__), "../../vendor", "livereload.js")
|
78
|
-
elsif File.exist?(parser.request_path[1..-1])
|
79
|
-
serve_file parser.request_path[1..-1] # Strip leading slash
|
80
|
-
else
|
81
|
-
send_data "HTTP/1.1 404 Not Found\r\nContent-Type: text/plain\r\nContent-Length: 13\r\n\r\n404 Not Found"
|
82
|
-
close_connection_after_writing
|
83
|
-
end
|
84
|
-
end
|
85
|
-
|
86
|
-
def serve_file path
|
87
|
-
content_type = case File.extname(path)
|
88
|
-
when '.css' then 'text/css'
|
89
|
-
when '.js' then 'application/ecmascript'
|
90
|
-
when '.gif' then 'image/gif'
|
91
|
-
when '.jpeg', '.jpg' then 'image/jpeg'
|
92
|
-
when '.png' then 'image/png'
|
93
|
-
else; 'text/plain'
|
94
|
-
end
|
95
|
-
send_data "HTTP/1.1 200 OK\r\nContent-Type: #{content_type}\r\nContent-Length: #{File.size path}\r\n\r\n"
|
96
|
-
stream_file_data(path).callback { close_connection_after_writing }
|
97
|
-
end
|
98
|
-
end
|
99
|
-
|
100
|
-
end
|
101
|
-
end
|