slinky 0.6.1 → 0.7.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/Gemfile +8 -6
- data/README.md +137 -48
- data/VERSION +1 -1
- data/bin/slinky +0 -3
- data/lib/slinky/builder.rb +7 -2
- data/lib/slinky/compiled_file.rb +1 -1
- data/lib/slinky/compilers/clojurescript-compiler.rb +18 -0
- data/lib/slinky/compilers/coffee-compiler.rb +2 -3
- data/lib/slinky/compilers/haml-compiler.rb +3 -4
- data/lib/slinky/compilers/less-compiler.rb +14 -0
- data/lib/slinky/compilers/sass-compiler.rb +2 -3
- data/lib/slinky/compilers.rb +34 -2
- data/lib/slinky/config_reader.rb +49 -0
- data/lib/slinky/listener.rb +27 -6
- data/lib/slinky/live_reload.rb +51 -0
- data/lib/slinky/manifest.rb +37 -18
- data/lib/slinky/proxy_server.rb +3 -4
- data/lib/slinky/runner.rb +30 -13
- data/lib/slinky/server.rb +39 -30
- data/lib/slinky.rb +15 -12
- data/slinky.gemspec +21 -19
- data/spec/slinky_spec.rb +90 -11
- data/spec/spec_helper.rb +21 -0
- metadata +145 -58
- data/lib/slinky/compilers/coffee-helper +0 -3
data/lib/slinky/manifest.rb
CHANGED
@@ -29,13 +29,14 @@ module Slinky
|
|
29
29
|
def initialize dir, config, options = {}
|
30
30
|
@dir = dir
|
31
31
|
@build_to = if d = options[:build_to]
|
32
|
-
File.
|
32
|
+
File.expand_path(d)
|
33
33
|
else
|
34
34
|
dir
|
35
35
|
end
|
36
36
|
@manifest_dir = ManifestDir.new dir, self, @build_to, self
|
37
37
|
@devel = (options[:devel].nil?) ? true : options[:devel]
|
38
38
|
@config = config
|
39
|
+
@no_minify = options[:no_minify] || config.dont_minify
|
39
40
|
end
|
40
41
|
|
41
42
|
# Returns a list of all files contained in this manifest
|
@@ -65,7 +66,11 @@ module Slinky
|
|
65
66
|
def remove_all_by_path paths
|
66
67
|
manifest_update paths do |path|
|
67
68
|
mf = find_by_path(path).first()
|
68
|
-
|
69
|
+
begin
|
70
|
+
mf.parent.remove_file(mf)
|
71
|
+
rescue
|
72
|
+
puts "Failed to remove <#{path}>"
|
73
|
+
end
|
69
74
|
end
|
70
75
|
end
|
71
76
|
|
@@ -78,11 +83,11 @@ module Slinky
|
|
78
83
|
def find_by_path path, allow_multiple = false
|
79
84
|
@manifest_dir.find_by_path path, allow_multiple
|
80
85
|
end
|
81
|
-
|
86
|
+
|
82
87
|
def scripts_string
|
83
88
|
if @devel
|
84
89
|
dependency_list.reject{|x| x.output_path.extname != ".js"}.collect{|d|
|
85
|
-
%Q\<script type="text/javascript" src="
|
90
|
+
%Q\<script type="text/javascript" src="/#{d.relative_output_path}"></script>\
|
86
91
|
}.join("")
|
87
92
|
else
|
88
93
|
%Q\<script type="text/javascript" src="/scripts.js?#{rand(999999999)}"></script>\
|
@@ -99,7 +104,11 @@ module Slinky
|
|
99
104
|
}.join("\n")
|
100
105
|
|
101
106
|
File.open(output, "w+"){|f|
|
102
|
-
|
107
|
+
unless @no_minify
|
108
|
+
f.write(compressor.compress(s))
|
109
|
+
else
|
110
|
+
f.write(s)
|
111
|
+
end
|
103
112
|
}
|
104
113
|
scripts.collect{|s| FileUtils.rm(s.build_to)}
|
105
114
|
end
|
@@ -116,7 +125,7 @@ module Slinky
|
|
116
125
|
compress(".css", "#{@build_to}/styles.css", compressor){|s, css|
|
117
126
|
css.gsub(CSS_URL_MATCHER){|url|
|
118
127
|
p = s.relative_output_path.dirname.to_s + "/#{$1}"
|
119
|
-
"url('
|
128
|
+
"url('/#{p}')"
|
120
129
|
}
|
121
130
|
}
|
122
131
|
end
|
@@ -124,7 +133,7 @@ module Slinky
|
|
124
133
|
def styles_string
|
125
134
|
if @devel
|
126
135
|
dependency_list.reject{|x| x.output_path.extname != ".css"}.collect{|d|
|
127
|
-
%Q\<link rel="stylesheet" href="
|
136
|
+
%Q\<link rel="stylesheet" href="/#{d.relative_output_path}" />\
|
128
137
|
}.join("")
|
129
138
|
else
|
130
139
|
%Q\<link rel="stylesheet" href="/styles.css?#{rand(999999999)}" />\
|
@@ -235,7 +244,7 @@ module Slinky
|
|
235
244
|
|
236
245
|
Dir.glob("#{dir}/*").each do |path|
|
237
246
|
# skip the build dir
|
238
|
-
next if Pathname.new(File.
|
247
|
+
next if Pathname.new(File.expand_path(path)) == Pathname.new(build_dir)
|
239
248
|
if File.directory? path
|
240
249
|
add_child(path)
|
241
250
|
else
|
@@ -259,7 +268,7 @@ module Slinky
|
|
259
268
|
[self]
|
260
269
|
when 1
|
261
270
|
path = [@dir, components[0]].join(File::SEPARATOR)
|
262
|
-
if (
|
271
|
+
if (File.directory?(path) rescue false)
|
263
272
|
c = @children.find{|d|
|
264
273
|
Pathname.new(d.dir).cleanpath == Pathname.new(path).cleanpath
|
265
274
|
}
|
@@ -289,7 +298,7 @@ module Slinky
|
|
289
298
|
|
290
299
|
# Adds a child directory
|
291
300
|
def add_child path
|
292
|
-
if
|
301
|
+
if File.directory? path
|
293
302
|
build_dir = (@build_dir + File.basename(path)).cleanpath
|
294
303
|
md = ManifestDir.new(path, self, build_dir, @manifest)
|
295
304
|
@children << md
|
@@ -318,7 +327,7 @@ module Slinky
|
|
318
327
|
end
|
319
328
|
|
320
329
|
def build
|
321
|
-
unless
|
330
|
+
unless File.directory?(@build_dir.to_s)
|
322
331
|
FileUtils.mkdir(@build_dir.to_s)
|
323
332
|
end
|
324
333
|
(@files + @children).each{|m|
|
@@ -338,7 +347,7 @@ module Slinky
|
|
338
347
|
def initialize source, build_path, manifest, parent = nil, options = {:devel => false}
|
339
348
|
@parent = parent
|
340
349
|
@source = source
|
341
|
-
@last_built = Time.
|
350
|
+
@last_built = Time.at(0)
|
342
351
|
|
343
352
|
@cfile = Compilers.cfile_for_file(@source)
|
344
353
|
|
@@ -349,7 +358,7 @@ module Slinky
|
|
349
358
|
end
|
350
359
|
|
351
360
|
def invalidate
|
352
|
-
@last_built = Time.
|
361
|
+
@last_built = Time.at(0)
|
353
362
|
@last_md5 = nil
|
354
363
|
end
|
355
364
|
|
@@ -366,9 +375,18 @@ module Slinky
|
|
366
375
|
name = Pathname.new(@source).basename.to_s
|
367
376
|
output = output_path.basename.to_s
|
368
377
|
# check for stars that are not escaped
|
369
|
-
|
370
|
-
|
371
|
-
|
378
|
+
a = [""]
|
379
|
+
last = ""
|
380
|
+
s.each_char {|c|
|
381
|
+
if c != "*" || last == "\\"
|
382
|
+
a[-1] << c
|
383
|
+
else
|
384
|
+
a << ""
|
385
|
+
end
|
386
|
+
last = c
|
387
|
+
}
|
388
|
+
|
389
|
+
if match_glob && a.size > 1
|
372
390
|
r2 = a.reduce{|a, x| /#{a}.*#{x}/}
|
373
391
|
name.match(r2) || output.match(r2)
|
374
392
|
else
|
@@ -393,7 +411,8 @@ module Slinky
|
|
393
411
|
# @return Pathname the output path
|
394
412
|
def output_path
|
395
413
|
if @cfile
|
396
|
-
|
414
|
+
ext = /\.[^.]*$/
|
415
|
+
Pathname.new(@source.gsub(ext, ".#{@cfile.output_ext}"))
|
397
416
|
else
|
398
417
|
Pathname.new(@source)
|
399
418
|
end
|
@@ -503,7 +522,7 @@ module Slinky
|
|
503
522
|
@last_md5 = hash
|
504
523
|
@updated = Time.now
|
505
524
|
# mangle file appropriately
|
506
|
-
@last_path = handle_directives
|
525
|
+
@last_path = handle_directives((compile @source), to)
|
507
526
|
end
|
508
527
|
end
|
509
528
|
|
data/lib/slinky/proxy_server.rb
CHANGED
@@ -44,9 +44,6 @@ module Slinky
|
|
44
44
|
proxy = nil
|
45
45
|
start_time = nil
|
46
46
|
conn.server :slinky, :host => "127.0.0.1", :port => slinky_port
|
47
|
-
proxy_servers.each{|p|
|
48
|
-
conn.server p, :host => p[0], :port => p[1]
|
49
|
-
}
|
50
47
|
|
51
48
|
conn.on_data do |data|
|
52
49
|
begin
|
@@ -58,6 +55,8 @@ module Slinky
|
|
58
55
|
data = ProxyServer.replace_path(data, path, new_path, proxy[1].path)
|
59
56
|
new_host = proxy[1].select(:host, :port).join(":")
|
60
57
|
data = ProxyServer.replace_host(data, new_host)
|
58
|
+
conn.server [proxy[1].host, proxy[1].port],
|
59
|
+
:host => proxy[1].host, :port => proxy[1].port
|
61
60
|
[proxy[1].host, proxy[1].port]
|
62
61
|
else :slinky
|
63
62
|
end
|
@@ -75,7 +74,7 @@ module Slinky
|
|
75
74
|
# take into account the lag from the backend server
|
76
75
|
so_far = Time.now - start_time
|
77
76
|
time = opt["lag"]/1000.0-so_far
|
78
|
-
EM.add_timer
|
77
|
+
EM.add_timer(time > 0 ? time : 0) do
|
79
78
|
conn.send_data resp
|
80
79
|
end
|
81
80
|
else
|
data/lib/slinky/runner.rb
CHANGED
@@ -3,18 +3,22 @@ module Slinky
|
|
3
3
|
COMMANDS = %w{start build}
|
4
4
|
|
5
5
|
def initialize argv
|
6
|
+
# While slinky largely works in Ruby 1.8, the tests don't run
|
7
|
+
# properly and using 1.9 is highly recommended.
|
8
|
+
if RUBY_VERSION.start_with?("1.8")
|
9
|
+
$stderr.puts(("Slinky is unsupported on Ruby 1.8." + \
|
10
|
+
" Using 1.9 is highly recommended.").foreground(:red))
|
11
|
+
|
12
|
+
end
|
13
|
+
|
6
14
|
@argv = argv
|
7
|
-
@options = {
|
8
|
-
:build_dir => "build",
|
9
|
-
:port => 5323,
|
10
|
-
:src_dir => "."
|
11
|
-
}
|
15
|
+
@options = {}
|
12
16
|
|
13
17
|
parser.parse! @argv
|
14
18
|
@command = @argv.shift
|
15
19
|
@arguments = @argv
|
16
20
|
|
17
|
-
config_path = @options[:config] || "#{@options[:src_dir]}/slinky.yaml"
|
21
|
+
config_path = @options[:config] || "#{@options[:src_dir] || "."}/slinky.yaml"
|
18
22
|
@config = if File.exist?(config_path)
|
19
23
|
ConfigReader.from_file(config_path)
|
20
24
|
else
|
@@ -38,7 +42,9 @@ module Slinky
|
|
38
42
|
opts.on("-p PORT", "--port PORT", "Port to run on (default: #{@options[:port]})"){|p| @options[:port] = p.to_i}
|
39
43
|
opts.on("-s DIR", "--src-dir DIR", "Directory containing project source"){|p| @options[:src_dir] = p}
|
40
44
|
opts.on("-n", "--no-proxy", "Don't set up proxy server"){ @options[:no_proxy] = true }
|
45
|
+
opts.on("-r", "--no-livereload", "Don't start a livereload server"){ @options[:no_livereload] = true }
|
41
46
|
opts.on("-c FILE", "--config FILE", "Path to configuration file"){|f| @options[:config] = f}
|
47
|
+
opts.on("-m", "--dont-minify", "Don't minify js/css"){ @options[:no_minify] = true }
|
42
48
|
end
|
43
49
|
end
|
44
50
|
|
@@ -57,26 +63,37 @@ module Slinky
|
|
57
63
|
Signal.trap('INT') { puts "Slinky fading away ... "; exit(0); }
|
58
64
|
|
59
65
|
EM::run {
|
66
|
+
@config ||= Config.empty
|
67
|
+
|
60
68
|
Slinky::Server.dir = @options[:src_dir]
|
61
69
|
Slinky::Server.config = @config
|
62
70
|
manifest = Manifest.new(Slinky::Server.dir,
|
63
71
|
Slinky::Server.config)
|
64
72
|
Slinky::Server.manifest = manifest
|
65
73
|
|
66
|
-
|
67
|
-
|
68
|
-
|
74
|
+
port = @options[:port] || @config.port
|
75
|
+
|
76
|
+
should_proxy = !(@config.no_proxy || @options[:no_proxy])
|
77
|
+
if !@config.proxies.empty? && should_proxy
|
78
|
+
server = EM::start_server "127.0.0.1", port+1, Slinky::Server
|
79
|
+
ProxyServer.run(@config.proxies, port, port+1)
|
69
80
|
else
|
70
|
-
EM::start_server "
|
81
|
+
EM::start_server "127.0.0.1", port, Slinky::Server
|
82
|
+
end
|
83
|
+
|
84
|
+
if !@config.no_livereload && !@options[:no_livereload]
|
85
|
+
lr_port = @options[:livereload_port] || @config.livereload_port
|
86
|
+
livereload = LiveReload.new("127.0.0.1", lr_port)
|
87
|
+
livereload.run
|
71
88
|
end
|
72
89
|
|
73
|
-
Listener.new(manifest).run
|
74
|
-
puts "Started static file server on port #{
|
90
|
+
Listener.new(manifest, livereload).run
|
91
|
+
puts "Started static file server on port #{port}"
|
75
92
|
}
|
76
93
|
end
|
77
94
|
|
78
95
|
def command_build
|
79
|
-
Builder.build(@options
|
96
|
+
Builder.build(@options, @config)
|
80
97
|
end
|
81
98
|
end
|
82
99
|
end
|
data/lib/slinky/server.rb
CHANGED
@@ -8,7 +8,7 @@ module Slinky
|
|
8
8
|
def self.dir; @dir || "."; end
|
9
9
|
|
10
10
|
def self.config= _config; @config = _config; end
|
11
|
-
def self.config; @config ||
|
11
|
+
def self.config; @config || ConfigReader.empty; end
|
12
12
|
|
13
13
|
def self.manifest= _manifest; @manifest = _manifest; end
|
14
14
|
def self.manifest; @manifest; end
|
@@ -20,17 +20,47 @@ module Slinky
|
|
20
20
|
path[1..-1] #get rid of the leading /
|
21
21
|
end
|
22
22
|
|
23
|
+
# Method called for every HTTP request made
|
24
|
+
def process_http_request
|
25
|
+
resp = EventMachine::DelegatedHttpResponse.new(self)
|
26
|
+
|
27
|
+
begin
|
28
|
+
path = Server.path_for_uri(@http_request_uri)
|
29
|
+
rescue
|
30
|
+
resp.status = 500
|
31
|
+
resp.content = "Invalid request"
|
32
|
+
return
|
33
|
+
end
|
34
|
+
|
35
|
+
Server.process_path(resp, path).send_response
|
36
|
+
end
|
37
|
+
|
38
|
+
def self.process_path resp, path, pushstate = false
|
39
|
+
file = manifest.find_by_path(path).first
|
40
|
+
if file.is_a? ManifestDir
|
41
|
+
file = manifest.find_by_path(path+"/index.html").first
|
42
|
+
end
|
43
|
+
|
44
|
+
resp.content_type MIME::Types.type_for(path).first
|
45
|
+
|
46
|
+
if file
|
47
|
+
handle_file(resp, file)
|
48
|
+
elsif !pushstate && p = config.pushstate_for_path("/" + path)
|
49
|
+
path = p[0] == "/" ? p[1..-1] : p
|
50
|
+
self.process_path(resp, path, true)
|
51
|
+
else
|
52
|
+
not_found resp
|
53
|
+
end
|
54
|
+
resp
|
55
|
+
end
|
56
|
+
|
23
57
|
# Takes a manifest file and produces a response for it
|
24
58
|
def self.handle_file resp, mf
|
25
|
-
if mf
|
26
|
-
|
27
|
-
serve_file resp, path.to_s
|
28
|
-
else
|
29
|
-
resp.status = 500
|
30
|
-
resp.content = "Error compiling #{mf.source}\n"
|
31
|
-
end
|
59
|
+
if path = mf.process
|
60
|
+
serve_file resp, path.to_s
|
32
61
|
else
|
33
|
-
|
62
|
+
resp.status = 500
|
63
|
+
resp.content = "Error compiling #{mf.source}\n"
|
34
64
|
end
|
35
65
|
resp
|
36
66
|
end
|
@@ -60,26 +90,5 @@ module Slinky
|
|
60
90
|
resp.status = 404
|
61
91
|
resp.content = "File not found\n"
|
62
92
|
end
|
63
|
-
|
64
|
-
# Method called for every HTTP request made
|
65
|
-
def process_http_request
|
66
|
-
manifest = Server.manifest
|
67
|
-
resp = EventMachine::DelegatedHttpResponse.new(self)
|
68
|
-
|
69
|
-
begin
|
70
|
-
path = Server.path_for_uri(@http_request_uri)
|
71
|
-
rescue
|
72
|
-
resp.status = 500
|
73
|
-
resp.content = "Invalid request"
|
74
|
-
return
|
75
|
-
end
|
76
|
-
|
77
|
-
file = manifest.find_by_path(path).first
|
78
|
-
if file.is_a? ManifestDir
|
79
|
-
file = manifest.find_by_path(path+"/index.html").first
|
80
|
-
end
|
81
|
-
resp.content_type MIME::Types.type_for(path).first
|
82
|
-
Server.handle_file(resp, file).send_response
|
83
|
-
end
|
84
93
|
end
|
85
94
|
end
|
data/lib/slinky.rb
CHANGED
@@ -1,8 +1,8 @@
|
|
1
|
-
ROOT = File.expand_path(File.dirname(__FILE__))
|
2
1
|
require 'uri'
|
3
2
|
require 'yaml'
|
4
3
|
require 'eventmachine'
|
5
4
|
require 'em-proxy'
|
5
|
+
require 'em-websocket'
|
6
6
|
require 'evma_httpserver'
|
7
7
|
require 'uri'
|
8
8
|
require 'tempfile'
|
@@ -11,20 +11,23 @@ require 'optparse'
|
|
11
11
|
require 'mime/types'
|
12
12
|
require 'yui/compressor'
|
13
13
|
require 'listen'
|
14
|
+
require 'multi_json'
|
14
15
|
|
15
|
-
require "
|
16
|
-
require "
|
17
|
-
require "
|
18
|
-
require "
|
19
|
-
require "
|
20
|
-
require "
|
21
|
-
require "
|
22
|
-
require "
|
23
|
-
require "
|
24
|
-
require "
|
16
|
+
require "slinky/em-popen3"
|
17
|
+
require "slinky/compilers"
|
18
|
+
require "slinky/config_reader"
|
19
|
+
require "slinky/manifest"
|
20
|
+
require "slinky/compiled_file"
|
21
|
+
require "slinky/proxy_server"
|
22
|
+
require "slinky/server"
|
23
|
+
require "slinky/runner"
|
24
|
+
require "slinky/builder"
|
25
|
+
require "slinky/listener"
|
26
|
+
require "slinky/live_reload"
|
25
27
|
|
26
28
|
# load compilers
|
27
|
-
|
29
|
+
root = File.expand_path(File.dirname(__FILE__))
|
30
|
+
Dir.glob("#{root}/slinky/compilers/*.rb").each{|compiler|
|
28
31
|
begin
|
29
32
|
require compiler
|
30
33
|
rescue
|
data/slinky.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = "slinky"
|
8
|
-
s.version = "0.
|
8
|
+
s.version = "0.7.0"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Micah Wylde"]
|
12
|
-
s.date = "2012-
|
12
|
+
s.date = "2012-12-21"
|
13
13
|
s.description = "A static file server for rich web apps that automatically compiles SASS, HAML, CoffeeScript and more"
|
14
14
|
s.email = "micah@micahw.com"
|
15
15
|
s.executables = ["slinky"]
|
@@ -31,13 +31,15 @@ Gem::Specification.new do |s|
|
|
31
31
|
"lib/slinky/builder.rb",
|
32
32
|
"lib/slinky/compiled_file.rb",
|
33
33
|
"lib/slinky/compilers.rb",
|
34
|
+
"lib/slinky/compilers/clojurescript-compiler.rb",
|
34
35
|
"lib/slinky/compilers/coffee-compiler.rb",
|
35
|
-
"lib/slinky/compilers/coffee-helper",
|
36
36
|
"lib/slinky/compilers/haml-compiler.rb",
|
37
|
+
"lib/slinky/compilers/less-compiler.rb",
|
37
38
|
"lib/slinky/compilers/sass-compiler.rb",
|
38
39
|
"lib/slinky/config_reader.rb",
|
39
40
|
"lib/slinky/em-popen3.rb",
|
40
41
|
"lib/slinky/listener.rb",
|
42
|
+
"lib/slinky/live_reload.rb",
|
41
43
|
"lib/slinky/manifest.rb",
|
42
44
|
"lib/slinky/proxy_server.rb",
|
43
45
|
"lib/slinky/runner.rb",
|
@@ -49,7 +51,7 @@ Gem::Specification.new do |s|
|
|
49
51
|
s.homepage = "http://mwylde.github.com/slinky/"
|
50
52
|
s.licenses = ["MIT"]
|
51
53
|
s.require_paths = ["lib"]
|
52
|
-
s.rubygems_version = "1.8.
|
54
|
+
s.rubygems_version = "1.8.24"
|
53
55
|
s.summary = "Static file server for javascript apps"
|
54
56
|
|
55
57
|
if s.respond_to? :specification_version then
|
@@ -58,56 +60,56 @@ Gem::Specification.new do |s|
|
|
58
60
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
59
61
|
s.add_runtime_dependency(%q<eventmachine>, [">= 0.12.0"])
|
60
62
|
s.add_runtime_dependency(%q<eventmachine_httpserver>, [">= 0.2.0"])
|
63
|
+
s.add_runtime_dependency(%q<em-websocket>, ["~> 0.3.8"])
|
61
64
|
s.add_runtime_dependency(%q<em-proxy>, [">= 0.1.6"])
|
62
65
|
s.add_runtime_dependency(%q<rainbow>, [">= 1.1.3"])
|
63
|
-
s.add_runtime_dependency(%q<haml>, [">= 3.0.0"])
|
64
|
-
s.add_runtime_dependency(%q<sass>, [">= 3.1.1"])
|
65
|
-
s.add_runtime_dependency(%q<coffee-script>, [">= 2.2.0"])
|
66
66
|
s.add_runtime_dependency(%q<mime-types>, [">= 1.16"])
|
67
67
|
s.add_runtime_dependency(%q<yui-compressor>, [">= 0.9.6"])
|
68
68
|
s.add_runtime_dependency(%q<listen>, [">= 0.4.5"])
|
69
|
+
s.add_runtime_dependency(%q<haml>, [">= 3.0.0"])
|
70
|
+
s.add_runtime_dependency(%q<sass>, [">= 3.1.1"])
|
71
|
+
s.add_runtime_dependency(%q<coffee-script>, [">= 2.2.0"])
|
69
72
|
s.add_development_dependency(%q<rspec>, ["~> 2.10.0"])
|
70
73
|
s.add_development_dependency(%q<yard>, ["~> 0.6.0"])
|
71
|
-
s.add_development_dependency(%q<bundler>, ["
|
74
|
+
s.add_development_dependency(%q<bundler>, [">= 1.1.0"])
|
72
75
|
s.add_development_dependency(%q<jeweler>, ["~> 1.8.0"])
|
73
|
-
s.add_development_dependency(%q<cover_me>, [">= 1.0.0.rc6"])
|
74
76
|
s.add_development_dependency(%q<fakefs>, ["~> 0.4.0"])
|
75
77
|
s.add_development_dependency(%q<em-http-request>, ["~> 1.0.0"])
|
76
78
|
else
|
77
79
|
s.add_dependency(%q<eventmachine>, [">= 0.12.0"])
|
78
80
|
s.add_dependency(%q<eventmachine_httpserver>, [">= 0.2.0"])
|
81
|
+
s.add_dependency(%q<em-websocket>, ["~> 0.3.8"])
|
79
82
|
s.add_dependency(%q<em-proxy>, [">= 0.1.6"])
|
80
83
|
s.add_dependency(%q<rainbow>, [">= 1.1.3"])
|
81
|
-
s.add_dependency(%q<haml>, [">= 3.0.0"])
|
82
|
-
s.add_dependency(%q<sass>, [">= 3.1.1"])
|
83
|
-
s.add_dependency(%q<coffee-script>, [">= 2.2.0"])
|
84
84
|
s.add_dependency(%q<mime-types>, [">= 1.16"])
|
85
85
|
s.add_dependency(%q<yui-compressor>, [">= 0.9.6"])
|
86
86
|
s.add_dependency(%q<listen>, [">= 0.4.5"])
|
87
|
+
s.add_dependency(%q<haml>, [">= 3.0.0"])
|
88
|
+
s.add_dependency(%q<sass>, [">= 3.1.1"])
|
89
|
+
s.add_dependency(%q<coffee-script>, [">= 2.2.0"])
|
87
90
|
s.add_dependency(%q<rspec>, ["~> 2.10.0"])
|
88
91
|
s.add_dependency(%q<yard>, ["~> 0.6.0"])
|
89
|
-
s.add_dependency(%q<bundler>, ["
|
92
|
+
s.add_dependency(%q<bundler>, [">= 1.1.0"])
|
90
93
|
s.add_dependency(%q<jeweler>, ["~> 1.8.0"])
|
91
|
-
s.add_dependency(%q<cover_me>, [">= 1.0.0.rc6"])
|
92
94
|
s.add_dependency(%q<fakefs>, ["~> 0.4.0"])
|
93
95
|
s.add_dependency(%q<em-http-request>, ["~> 1.0.0"])
|
94
96
|
end
|
95
97
|
else
|
96
98
|
s.add_dependency(%q<eventmachine>, [">= 0.12.0"])
|
97
99
|
s.add_dependency(%q<eventmachine_httpserver>, [">= 0.2.0"])
|
100
|
+
s.add_dependency(%q<em-websocket>, ["~> 0.3.8"])
|
98
101
|
s.add_dependency(%q<em-proxy>, [">= 0.1.6"])
|
99
102
|
s.add_dependency(%q<rainbow>, [">= 1.1.3"])
|
100
|
-
s.add_dependency(%q<haml>, [">= 3.0.0"])
|
101
|
-
s.add_dependency(%q<sass>, [">= 3.1.1"])
|
102
|
-
s.add_dependency(%q<coffee-script>, [">= 2.2.0"])
|
103
103
|
s.add_dependency(%q<mime-types>, [">= 1.16"])
|
104
104
|
s.add_dependency(%q<yui-compressor>, [">= 0.9.6"])
|
105
105
|
s.add_dependency(%q<listen>, [">= 0.4.5"])
|
106
|
+
s.add_dependency(%q<haml>, [">= 3.0.0"])
|
107
|
+
s.add_dependency(%q<sass>, [">= 3.1.1"])
|
108
|
+
s.add_dependency(%q<coffee-script>, [">= 2.2.0"])
|
106
109
|
s.add_dependency(%q<rspec>, ["~> 2.10.0"])
|
107
110
|
s.add_dependency(%q<yard>, ["~> 0.6.0"])
|
108
|
-
s.add_dependency(%q<bundler>, ["
|
111
|
+
s.add_dependency(%q<bundler>, [">= 1.1.0"])
|
109
112
|
s.add_dependency(%q<jeweler>, ["~> 1.8.0"])
|
110
|
-
s.add_dependency(%q<cover_me>, [">= 1.0.0.rc6"])
|
111
113
|
s.add_dependency(%q<fakefs>, ["~> 0.4.0"])
|
112
114
|
s.add_dependency(%q<em-http-request>, ["~> 1.0.0"])
|
113
115
|
end
|