linner 0.1.2 → 0.1.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 632ba0af08197976ece2c8920e3991868d0c5000
4
- data.tar.gz: d1fe25a52c0a8af4edd46451b7cdbca1753530e2
3
+ metadata.gz: 59bef00386f78c40d3d65b73210508c6655fa56d
4
+ data.tar.gz: b64d9317df2b2c194bd9706d180df5fb10bfd0f6
5
5
  SHA512:
6
- metadata.gz: 2a5be3981994798ce60ca8b94af752b9bcbe13c2735dd99bc61416fc2e80544d63682628870cf53c90be190491cb9536869262b86e6995fe8d47ce4f7ea0afdb
7
- data.tar.gz: 9c1eee6c25c28942848e0d9ca44b27d28e38b1c3e8986a379b0ee9fb4b30632af3abe8010414f44044e12a567957d2871e4086615ae3fdf61bd66fb807ad220d
6
+ metadata.gz: d603e4a09eb95a9216a2bbb45053b8b793a269217ccc4c1d0fc4170d0806145fbf5505abbbc0114e1fe71194c3c58a769f83c241237bfe86b8e3e62c0309c360
7
+ data.tar.gz: 4f7dc261117e786f902800ee729668eefb9b428abf4d25f4ec48a10cabffb68efbb5ce868798920136c5b5e32bb795ee7351e5190dba206137b50fd0cf52e692
data/lib/linner.rb CHANGED
@@ -2,7 +2,6 @@ require "linner/version"
2
2
  require "linner/command"
3
3
  require "linner/asset"
4
4
  require "linner/helper"
5
- require "linner/reactor"
6
5
  require "linner/wrapper"
7
6
  require "linner/template"
8
7
  require "linner/notifier"
@@ -18,7 +18,10 @@ module Linner
18
18
 
19
19
  desc "watch", "watch assets"
20
20
  def watch
21
- @reactor = Reactor.new
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"
@@ -1,3 +1,3 @@
1
1
  module Linner
2
- VERSION = "0.1.2"
2
+ VERSION = "0.1.3"
3
3
  end
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.2
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-23 00:00:00.000000000 Z
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
@@ -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