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 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