slinky 0.7.0 → 0.7.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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 889ff2fbc318014fa07dc0a6b6ec58f6836e8154
4
+ data.tar.gz: e9ae1e023ceeb1f07ce8c8950f279a52d1f6e048
5
+ SHA512:
6
+ metadata.gz: 4b072781ffd19338d0685a2bf3cd0d25545343ec88d92de5aa3463afbcf992b23034639ad3792efe47a510d6db371fbd2d6cc9a4c2e9cc2078bae9d3cd98b513
7
+ data.tar.gz: 9ea118ef3f70d8708fa85547029ffec8023b798e09ca8dc701111927c634bdb0a96ad8ec660070bcada4c6933dd83dc06faab7e6462024884bb6cd08fee938de
data/.travis.yml CHANGED
@@ -1,4 +1,5 @@
1
1
  language: ruby
2
2
  rvm:
3
+ - 2.1.0
4
+ - 2.0.0
3
5
  - 1.9.3
4
- - 1.9.2
data/Gemfile CHANGED
@@ -1,25 +1,25 @@
1
1
  source "http://rubygems.org"
2
2
 
3
3
  # main gems
4
- gem "eventmachine", ">= 0.12.0"
5
- gem "eventmachine_httpserver", ">= 0.2.0"
6
- gem "em-websocket", "~> 0.3.8"
7
- gem "em-proxy", ">= 0.1.6"
8
- gem "rainbow", ">= 1.1.3"
9
- gem "mime-types", ">= 1.16"
10
- gem "yui-compressor", ">= 0.9.6"
11
- gem "listen", ">= 0.4.5"
4
+ gem "eventmachine", "~> 1.0"
5
+ gem "eventmachine_httpserver", "~> 0.2"
6
+ gem "em-websocket", "~> 0.3"
7
+ gem "em-proxy", "~> 0.1"
8
+ gem "rainbow", "~> 1.1"
9
+ gem "mime-types", "~> 1.16"
10
+ gem "yui-compressor", "~> 0.12"
11
+ gem "listen", "~> 2.4"
12
12
 
13
13
  # compilation support gems
14
- gem "haml", ">= 3.0.0"
15
- gem "sass", ">= 3.1.1"
16
- gem "coffee-script", ">= 2.2.0"
14
+ gem "haml", "~> 3.1"
15
+ gem "sass", "~> 3.1"
16
+ gem "coffee-script", "~> 2.2"
17
17
 
18
18
  group :development do
19
- gem "rspec", "~> 2.10.0"
20
- gem "yard", "~> 0.6.0"
21
- gem "bundler", ">= 1.1.0"
22
- gem "jeweler", "~> 1.8.0"
23
- gem "fakefs", '~> 0.4.0'
24
- gem "em-http-request", '~> 1.0.0'
19
+ gem "rspec", "~> 2.10"
20
+ gem "yard", "~> 0.8"
21
+ gem "bundler", "~> 1.5"
22
+ gem "jeweler", "~> 1.8"
23
+ gem "fakefs", '~> 0.5', :require => "fakefs/safe"
24
+ gem "em-http-request", '~> 1.0'
25
25
  end
data/README.md CHANGED
@@ -10,19 +10,17 @@ leaving you ready to push to production.
10
10
 
11
11
  [![Build Status](https://secure.travis-ci.org/mwylde/slinky.png)](http://travis-ci.org/mwylde/slinky)
12
12
 
13
- What can slinky do for you?
13
+ #### What can slinky do for you?
14
14
 
15
- #### Slinky Server
15
+ ##### Slinky Server
16
16
 
17
- * Transparently compiles sources for a variety of languages (currently
18
- supported: CoffeeScript, ClojureScript, SASS/SCSS, LESS, HAML)
17
+ * Transparently compiles sources for a variety of languages
19
18
  * Supports the [LiveReload](http://livereload.com) protocol, for
20
19
  instant browser updates
21
- * Allows proxying to backend servers, so you can develop your client
22
- and server code separately
20
+ * Includes a customizable proxy, so your dev environment can mirror production
23
21
  * Includes support for HTML5 [pushState](https://developer.mozilla.org/en-US/docs/DOM/Manipulating_the_browser_history) based apps
24
22
 
25
- #### Slinky Builder
23
+ ##### Slinky Builder
26
24
 
27
25
  * Keeps track of the proper include order of your scripts and styles
28
26
  * Compiles, minifies and concatenates JavaScript and CSS
@@ -45,14 +43,36 @@ $ scp -r ../pub/ myserver.com:/var/www/project
45
43
 
46
44
  ## The details
47
45
 
48
- 1. [LiveReload/Guard support](#livereloadguard-support)
49
- 2. [Script & style management](#script--style-management)
50
- 3. [Specifying order](#specifying-order)
51
- 4. [Dependencies](#dependencies)
52
- 5. [Configuration](#configuration)
53
- 6. [PushState](#pushstate)
54
- 7. [Proxies](#proxies)
55
- 8. [Ignores](#ignores)
46
+ 1. [Transparent compilation](#transparent-compilation)
47
+ 2. [LiveReload/Guard support](#livereloadguard-support)
48
+ 3. [Script & style management](#script--style-management)
49
+ 4. [Specifying order](#specifying-order)
50
+ 5. [Dependencies](#dependencies)
51
+ 6. [Configuration](#configuration)
52
+ 7. [PushState](#pushstate)
53
+ 8. [Proxies](#proxies)
54
+ 9. [Ignores](#ignores)
55
+
56
+ ### Transparent compilation
57
+
58
+ The Slinky server will transparently compile various front-end languages
59
+ for you, providing a smooth transition from development to production.
60
+ What does this mean? When Slinky sees a request for a file that doesn't
61
+ exist (say, "/scripts/core.js") it will look for a file that can be compiled
62
+ into that ("/scripts/core.coffee"), compile it, then return the result. This
63
+ allows you to write code without concern for which files are "native"
64
+ and which need compilation.
65
+
66
+ Currently supported languages include:
67
+
68
+ * CoffeeScript
69
+ * HAML
70
+ * SASS/SCSS
71
+ * LESS
72
+ * ClojureScript (experimental)
73
+
74
+ Adding support for new languages is simple, and pull requests are welcome.
75
+
56
76
 
57
77
  ### LiveReload/Guard support
58
78
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.7.0
1
+ 0.7.1
@@ -8,8 +8,7 @@ module Slinky
8
8
  end
9
9
 
10
10
  def run
11
- listener = Listen.to(@manifest.dir)
12
- listener.change do |mod, add, rem|
11
+ listener = Listen.to(@manifest.dir) do |mod, add, rem|
13
12
  handle_mod(mod) if mod.size > 0
14
13
  handle_add(add) if add.size > 0
15
14
 
@@ -29,7 +28,8 @@ module Slinky
29
28
 
30
29
  handle_rem(rem) if rem.size > 0
31
30
  end
32
- listener.start(false)
31
+ listener.start
32
+ listener
33
33
  end
34
34
 
35
35
  def handle_mod files
data/lib/slinky/runner.rb CHANGED
@@ -60,8 +60,6 @@ module Slinky
60
60
  end
61
61
 
62
62
  def command_start
63
- Signal.trap('INT') { puts "Slinky fading away ... "; exit(0); }
64
-
65
63
  EM::run {
66
64
  @config ||= Config.empty
67
65
 
@@ -88,6 +86,14 @@ module Slinky
88
86
  end
89
87
 
90
88
  Listener.new(manifest, livereload).run
89
+
90
+ Signal.trap('INT') {
91
+ Listen.stop
92
+ EM::stop
93
+ puts "Slinky fading away ... "
94
+ exit(0)
95
+ }
96
+
91
97
  puts "Started static file server on port #{port}"
92
98
  }
93
99
  end
data/lib/slinky/server.rb CHANGED
@@ -38,13 +38,20 @@ module Slinky
38
38
  def self.process_path resp, path, pushstate = false
39
39
  file = manifest.find_by_path(path).first
40
40
  if file.is_a? ManifestDir
41
- file = manifest.find_by_path(path+"/index.html").first
41
+ file = manifest.find_by_path(path + "/index.html").first
42
+ path += "/index.html"
42
43
  end
43
44
 
44
45
  resp.content_type MIME::Types.type_for(path).first
45
46
 
46
47
  if file
47
- handle_file(resp, file)
48
+ if file.source.end_with?(path)
49
+ # They're requesting the source file and we should just
50
+ # return it
51
+ serve_file(resp, file.source)
52
+ else
53
+ handle_file(resp, file)
54
+ end
48
55
  elsif !pushstate && p = config.pushstate_for_path("/" + path)
49
56
  path = p[0] == "/" ? p[1..-1] : p
50
57
  self.process_path(resp, path, true)
@@ -56,9 +63,13 @@ module Slinky
56
63
 
57
64
  # Takes a manifest file and produces a response for it
58
65
  def self.handle_file resp, mf
59
- if path = mf.process
60
- serve_file resp, path.to_s
61
- else
66
+ begin
67
+ if path = mf.process
68
+ serve_file resp, path.to_s
69
+ else
70
+ raise StandardError.new
71
+ end
72
+ rescue
62
73
  resp.status = 500
63
74
  resp.content = "Error compiling #{mf.source}\n"
64
75
  end
data/slinky.gemspec CHANGED
@@ -2,14 +2,16 @@
2
2
  # DO NOT EDIT THIS FILE DIRECTLY
3
3
  # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
4
  # -*- encoding: utf-8 -*-
5
+ # stub: slinky 0.7.1 ruby lib
5
6
 
6
7
  Gem::Specification.new do |s|
7
8
  s.name = "slinky"
8
- s.version = "0.7.0"
9
+ s.version = "0.7.1"
9
10
 
10
11
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
12
+ s.require_paths = ["lib"]
11
13
  s.authors = ["Micah Wylde"]
12
- s.date = "2012-12-21"
14
+ s.date = "2014-03-30"
13
15
  s.description = "A static file server for rich web apps that automatically compiles SASS, HAML, CoffeeScript and more"
14
16
  s.email = "micah@micahw.com"
15
17
  s.executables = ["slinky"]
@@ -50,68 +52,67 @@ Gem::Specification.new do |s|
50
52
  ]
51
53
  s.homepage = "http://mwylde.github.com/slinky/"
52
54
  s.licenses = ["MIT"]
53
- s.require_paths = ["lib"]
54
- s.rubygems_version = "1.8.24"
55
+ s.rubygems_version = "2.2.2"
55
56
  s.summary = "Static file server for javascript apps"
56
57
 
57
58
  if s.respond_to? :specification_version then
58
- s.specification_version = 3
59
+ s.specification_version = 4
59
60
 
60
61
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
61
- s.add_runtime_dependency(%q<eventmachine>, [">= 0.12.0"])
62
- s.add_runtime_dependency(%q<eventmachine_httpserver>, [">= 0.2.0"])
63
- s.add_runtime_dependency(%q<em-websocket>, ["~> 0.3.8"])
64
- s.add_runtime_dependency(%q<em-proxy>, [">= 0.1.6"])
65
- s.add_runtime_dependency(%q<rainbow>, [">= 1.1.3"])
66
- s.add_runtime_dependency(%q<mime-types>, [">= 1.16"])
67
- s.add_runtime_dependency(%q<yui-compressor>, [">= 0.9.6"])
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"])
72
- s.add_development_dependency(%q<rspec>, ["~> 2.10.0"])
73
- s.add_development_dependency(%q<yard>, ["~> 0.6.0"])
74
- s.add_development_dependency(%q<bundler>, [">= 1.1.0"])
75
- s.add_development_dependency(%q<jeweler>, ["~> 1.8.0"])
76
- s.add_development_dependency(%q<fakefs>, ["~> 0.4.0"])
77
- s.add_development_dependency(%q<em-http-request>, ["~> 1.0.0"])
62
+ s.add_runtime_dependency(%q<eventmachine>, ["~> 1.0"])
63
+ s.add_runtime_dependency(%q<eventmachine_httpserver>, ["~> 0.2"])
64
+ s.add_runtime_dependency(%q<em-websocket>, ["~> 0.3"])
65
+ s.add_runtime_dependency(%q<em-proxy>, ["~> 0.1"])
66
+ s.add_runtime_dependency(%q<rainbow>, ["~> 1.1"])
67
+ s.add_runtime_dependency(%q<mime-types>, ["~> 1.16"])
68
+ s.add_runtime_dependency(%q<yui-compressor>, ["~> 0.12"])
69
+ s.add_runtime_dependency(%q<listen>, ["~> 2.4"])
70
+ s.add_runtime_dependency(%q<haml>, ["~> 3.1"])
71
+ s.add_runtime_dependency(%q<sass>, ["~> 3.1"])
72
+ s.add_runtime_dependency(%q<coffee-script>, ["~> 2.2"])
73
+ s.add_development_dependency(%q<rspec>, ["~> 2.10"])
74
+ s.add_development_dependency(%q<yard>, ["~> 0.8"])
75
+ s.add_development_dependency(%q<bundler>, ["~> 1.5"])
76
+ s.add_development_dependency(%q<jeweler>, ["~> 1.8"])
77
+ s.add_development_dependency(%q<fakefs>, ["~> 0.5"])
78
+ s.add_development_dependency(%q<em-http-request>, ["~> 1.0"])
78
79
  else
79
- s.add_dependency(%q<eventmachine>, [">= 0.12.0"])
80
- s.add_dependency(%q<eventmachine_httpserver>, [">= 0.2.0"])
81
- s.add_dependency(%q<em-websocket>, ["~> 0.3.8"])
82
- s.add_dependency(%q<em-proxy>, [">= 0.1.6"])
83
- s.add_dependency(%q<rainbow>, [">= 1.1.3"])
84
- s.add_dependency(%q<mime-types>, [">= 1.16"])
85
- s.add_dependency(%q<yui-compressor>, [">= 0.9.6"])
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"])
90
- s.add_dependency(%q<rspec>, ["~> 2.10.0"])
91
- s.add_dependency(%q<yard>, ["~> 0.6.0"])
92
- s.add_dependency(%q<bundler>, [">= 1.1.0"])
93
- s.add_dependency(%q<jeweler>, ["~> 1.8.0"])
94
- s.add_dependency(%q<fakefs>, ["~> 0.4.0"])
95
- s.add_dependency(%q<em-http-request>, ["~> 1.0.0"])
80
+ s.add_dependency(%q<eventmachine>, ["~> 1.0"])
81
+ s.add_dependency(%q<eventmachine_httpserver>, ["~> 0.2"])
82
+ s.add_dependency(%q<em-websocket>, ["~> 0.3"])
83
+ s.add_dependency(%q<em-proxy>, ["~> 0.1"])
84
+ s.add_dependency(%q<rainbow>, ["~> 1.1"])
85
+ s.add_dependency(%q<mime-types>, ["~> 1.16"])
86
+ s.add_dependency(%q<yui-compressor>, ["~> 0.12"])
87
+ s.add_dependency(%q<listen>, ["~> 2.4"])
88
+ s.add_dependency(%q<haml>, ["~> 3.1"])
89
+ s.add_dependency(%q<sass>, ["~> 3.1"])
90
+ s.add_dependency(%q<coffee-script>, ["~> 2.2"])
91
+ s.add_dependency(%q<rspec>, ["~> 2.10"])
92
+ s.add_dependency(%q<yard>, ["~> 0.8"])
93
+ s.add_dependency(%q<bundler>, ["~> 1.5"])
94
+ s.add_dependency(%q<jeweler>, ["~> 1.8"])
95
+ s.add_dependency(%q<fakefs>, ["~> 0.5"])
96
+ s.add_dependency(%q<em-http-request>, ["~> 1.0"])
96
97
  end
97
98
  else
98
- s.add_dependency(%q<eventmachine>, [">= 0.12.0"])
99
- s.add_dependency(%q<eventmachine_httpserver>, [">= 0.2.0"])
100
- s.add_dependency(%q<em-websocket>, ["~> 0.3.8"])
101
- s.add_dependency(%q<em-proxy>, [">= 0.1.6"])
102
- s.add_dependency(%q<rainbow>, [">= 1.1.3"])
103
- s.add_dependency(%q<mime-types>, [">= 1.16"])
104
- s.add_dependency(%q<yui-compressor>, [">= 0.9.6"])
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"])
109
- s.add_dependency(%q<rspec>, ["~> 2.10.0"])
110
- s.add_dependency(%q<yard>, ["~> 0.6.0"])
111
- s.add_dependency(%q<bundler>, [">= 1.1.0"])
112
- s.add_dependency(%q<jeweler>, ["~> 1.8.0"])
113
- s.add_dependency(%q<fakefs>, ["~> 0.4.0"])
114
- s.add_dependency(%q<em-http-request>, ["~> 1.0.0"])
99
+ s.add_dependency(%q<eventmachine>, ["~> 1.0"])
100
+ s.add_dependency(%q<eventmachine_httpserver>, ["~> 0.2"])
101
+ s.add_dependency(%q<em-websocket>, ["~> 0.3"])
102
+ s.add_dependency(%q<em-proxy>, ["~> 0.1"])
103
+ s.add_dependency(%q<rainbow>, ["~> 1.1"])
104
+ s.add_dependency(%q<mime-types>, ["~> 1.16"])
105
+ s.add_dependency(%q<yui-compressor>, ["~> 0.12"])
106
+ s.add_dependency(%q<listen>, ["~> 2.4"])
107
+ s.add_dependency(%q<haml>, ["~> 3.1"])
108
+ s.add_dependency(%q<sass>, ["~> 3.1"])
109
+ s.add_dependency(%q<coffee-script>, ["~> 2.2"])
110
+ s.add_dependency(%q<rspec>, ["~> 2.10"])
111
+ s.add_dependency(%q<yard>, ["~> 0.8"])
112
+ s.add_dependency(%q<bundler>, ["~> 1.5"])
113
+ s.add_dependency(%q<jeweler>, ["~> 1.8"])
114
+ s.add_dependency(%q<fakefs>, ["~> 0.5"])
115
+ s.add_dependency(%q<em-http-request>, ["~> 1.0"])
115
116
  end
116
117
  end
117
118
 
data/spec/slinky_spec.rb CHANGED
@@ -345,6 +345,11 @@ describe "Slinky" do
345
345
  @resp.content.should == File.read("/src/l1/test.js")
346
346
  end
347
347
 
348
+ it "should serve source files" do
349
+ Slinky::Server.serve_file @resp, "/src/l1/l2/test3.coffee"
350
+ @resp.content.should == File.read("/src/l1/l2/test3.coffee")
351
+ end
352
+
348
353
  it "should serve 404s" do
349
354
  @resp.should_receive(:status=).with(404)
350
355
  Slinky::Server.serve_file @resp, "/src/asdf/faljshd"
@@ -425,6 +430,14 @@ eos
425
430
  end
426
431
  end
427
432
 
433
+ it "should not crash for syntax errors" do
434
+ File.open("/src/bad_file.haml", "w+"){|f| f.write("%head{") }
435
+ mf = Slinky::ManifestFile.new("/src/bad_file.haml", nil, @mdevel)
436
+ $stderr.should_receive(:puts).with(/Failed on/)
437
+ @resp.should_receive(:status=).with(500)
438
+ Slinky::Server.handle_file @resp, mf
439
+ end
440
+
428
441
  it "should serve files for realz" do
429
442
  $stdout.should_receive(:puts).with(/Started static file server on port 43453/)
430
443
  @results = []
@@ -435,7 +448,7 @@ eos
435
448
  slinky_scripts
436
449
  slinky_styles
437
450
  %body
438
- h1. index
451
+ %h1 index
439
452
  eos
440
453
  }
441
454
  run_for 3 do
@@ -451,7 +464,7 @@ eos
451
464
  rs = [multi.responses[:callback][:index], multi.responses[:callback][:base]]
452
465
  rs.compact.size.should == 2
453
466
  rs.each{|r|
454
- r.response.include?("index").should == true
467
+ r.response.include?("<h1>index</h1>").should == true
455
468
  }
456
469
  multi.responses[:errback].size.should == 0
457
470
  EM.stop_event_loop
data/spec/spec_helper.rb CHANGED
@@ -1,5 +1,7 @@
1
1
  $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
2
2
  $LOAD_PATH.unshift(File.dirname(__FILE__))
3
+
4
+ require 'bundler/setup'
3
5
  require 'rspec'
4
6
  require 'slinky'
5
7
  require 'fakefs/safe'
@@ -10,22 +12,62 @@ require 'open-uri'
10
12
  # in ./support/ and its subdirectories.
11
13
  Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each {|f| require f}
12
14
 
13
-
15
+ # Monkeypath to fix Tempfile creation in Ruby 2.1
16
+ # (https://github.com/defunkt/fakefs/pull/227)
14
17
  module FakeFS
15
- class File
16
- def self.absolute_path(*args)
17
- RealFile.absolute_path(*args)
18
- end
19
- end
20
-
21
- # Neccessary to fix a problem between FakeFS and Tempfile
22
18
  class Dir
23
- def self.mkdir(string, integer = 0)
24
- parent = string.split('/')
25
- parent.pop
26
- raise Errno::ENOENT, "No such file or directory - #{string}" unless parent.join == "" || parent.join == "." || FileSystem.find(parent.join('/'))
27
- raise Errno::EEXIST, "File exists - #{string}" if File.exists?(string)
28
- FileUtils.mkdir_p(string)
19
+ if RUBY_VERSION >= '2.1'
20
+ module Tmpname # :nodoc:
21
+ module_function
22
+
23
+ def tmpdir
24
+ Dir.tmpdir
25
+ end
26
+
27
+ def make_tmpname(prefix_suffix, n)
28
+ case prefix_suffix
29
+ when String
30
+ prefix = prefix_suffix
31
+ suffix = ""
32
+ when Array
33
+ prefix = prefix_suffix[0]
34
+ suffix = prefix_suffix[1]
35
+ else
36
+ raise ArgumentError, "unexpected prefix_suffix: #{prefix_suffix.inspect}"
37
+ end
38
+ t = Time.now.strftime("%Y%m%d")
39
+ path = "#{prefix}#{t}-#{$$}-#{rand(0x100000000).to_s(36)}"
40
+ path << "-#{n}" if n
41
+ path << suffix
42
+ end
43
+
44
+ def create(basename, *rest)
45
+ if opts = Hash.try_convert(rest[-1])
46
+ opts = opts.dup if rest.pop.equal?(opts)
47
+ max_try = opts.delete(:max_try)
48
+ opts = [opts]
49
+ else
50
+ opts = []
51
+ end
52
+ tmpdir, = *rest
53
+ if $SAFE > 0 and tmpdir.tainted?
54
+ tmpdir = '/tmp'
55
+ else
56
+ tmpdir ||= tmpdir()
57
+ end
58
+ n = nil
59
+ begin
60
+ path = File.join(tmpdir, make_tmpname(basename, n))
61
+ yield(path, n, *opts)
62
+ rescue Errno::EEXIST
63
+ n ||= 0
64
+ n += 1
65
+ retry if !max_try or n < max_try
66
+ raise "cannot generate temporary name using `#{basename}' under `#{tmpdir}'"
67
+ end
68
+ path
69
+ end
70
+ end
29
71
  end
30
72
  end
31
73
  end
@@ -54,6 +96,24 @@ module Slinky
54
96
  end
55
97
  end
56
98
 
99
+ # Compressors don't work under FakeFS
100
+ class FakeCompressor
101
+ def compress s
102
+ s
103
+ end
104
+ end
105
+
106
+ class Manifest
107
+ alias :old_compress :compress
108
+ def compress ext, output, compressor
109
+ if block_given?
110
+ old_compress ext, output, FakeCompressor.new, &Proc.new
111
+ else
112
+ old_compress ext, output, FakeCompressor.new
113
+ end
114
+ end
115
+ end
116
+
57
117
  # No way to make this work with FakeFS, so just disabled it
58
118
  class Listener
59
119
  def run; end
@@ -74,6 +134,7 @@ RSpec.configure do |config|
74
134
  @config = Slinky::ConfigReader.empty
75
135
  end
76
136
  config.before :each do
137
+ FakeFS.activate!
77
138
  FileUtils.rm_rf("/src") rescue nil
78
139
  FileUtils.mkdir("/src")
79
140
  FileUtils.mkdir_p("/src/l1/l2/l3")
metadata CHANGED
@@ -1,288 +1,253 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: slinky
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.0
5
- prerelease:
4
+ version: 0.7.1
6
5
  platform: ruby
7
6
  authors:
8
7
  - Micah Wylde
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2012-12-21 00:00:00.000000000 Z
11
+ date: 2014-03-30 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: eventmachine
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
- - - ! '>='
17
+ - - "~>"
20
18
  - !ruby/object:Gem::Version
21
- version: 0.12.0
19
+ version: '1.0'
22
20
  type: :runtime
23
21
  prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
23
  requirements:
27
- - - ! '>='
24
+ - - "~>"
28
25
  - !ruby/object:Gem::Version
29
- version: 0.12.0
26
+ version: '1.0'
30
27
  - !ruby/object:Gem::Dependency
31
28
  name: eventmachine_httpserver
32
29
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
30
  requirements:
35
- - - ! '>='
31
+ - - "~>"
36
32
  - !ruby/object:Gem::Version
37
- version: 0.2.0
33
+ version: '0.2'
38
34
  type: :runtime
39
35
  prerelease: false
40
36
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
37
  requirements:
43
- - - ! '>='
38
+ - - "~>"
44
39
  - !ruby/object:Gem::Version
45
- version: 0.2.0
40
+ version: '0.2'
46
41
  - !ruby/object:Gem::Dependency
47
42
  name: em-websocket
48
43
  requirement: !ruby/object:Gem::Requirement
49
- none: false
50
44
  requirements:
51
- - - ~>
45
+ - - "~>"
52
46
  - !ruby/object:Gem::Version
53
- version: 0.3.8
47
+ version: '0.3'
54
48
  type: :runtime
55
49
  prerelease: false
56
50
  version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
51
  requirements:
59
- - - ~>
52
+ - - "~>"
60
53
  - !ruby/object:Gem::Version
61
- version: 0.3.8
54
+ version: '0.3'
62
55
  - !ruby/object:Gem::Dependency
63
56
  name: em-proxy
64
57
  requirement: !ruby/object:Gem::Requirement
65
- none: false
66
58
  requirements:
67
- - - ! '>='
59
+ - - "~>"
68
60
  - !ruby/object:Gem::Version
69
- version: 0.1.6
61
+ version: '0.1'
70
62
  type: :runtime
71
63
  prerelease: false
72
64
  version_requirements: !ruby/object:Gem::Requirement
73
- none: false
74
65
  requirements:
75
- - - ! '>='
66
+ - - "~>"
76
67
  - !ruby/object:Gem::Version
77
- version: 0.1.6
68
+ version: '0.1'
78
69
  - !ruby/object:Gem::Dependency
79
70
  name: rainbow
80
71
  requirement: !ruby/object:Gem::Requirement
81
- none: false
82
72
  requirements:
83
- - - ! '>='
73
+ - - "~>"
84
74
  - !ruby/object:Gem::Version
85
- version: 1.1.3
75
+ version: '1.1'
86
76
  type: :runtime
87
77
  prerelease: false
88
78
  version_requirements: !ruby/object:Gem::Requirement
89
- none: false
90
79
  requirements:
91
- - - ! '>='
80
+ - - "~>"
92
81
  - !ruby/object:Gem::Version
93
- version: 1.1.3
82
+ version: '1.1'
94
83
  - !ruby/object:Gem::Dependency
95
84
  name: mime-types
96
85
  requirement: !ruby/object:Gem::Requirement
97
- none: false
98
86
  requirements:
99
- - - ! '>='
87
+ - - "~>"
100
88
  - !ruby/object:Gem::Version
101
89
  version: '1.16'
102
90
  type: :runtime
103
91
  prerelease: false
104
92
  version_requirements: !ruby/object:Gem::Requirement
105
- none: false
106
93
  requirements:
107
- - - ! '>='
94
+ - - "~>"
108
95
  - !ruby/object:Gem::Version
109
96
  version: '1.16'
110
97
  - !ruby/object:Gem::Dependency
111
98
  name: yui-compressor
112
99
  requirement: !ruby/object:Gem::Requirement
113
- none: false
114
100
  requirements:
115
- - - ! '>='
101
+ - - "~>"
116
102
  - !ruby/object:Gem::Version
117
- version: 0.9.6
103
+ version: '0.12'
118
104
  type: :runtime
119
105
  prerelease: false
120
106
  version_requirements: !ruby/object:Gem::Requirement
121
- none: false
122
107
  requirements:
123
- - - ! '>='
108
+ - - "~>"
124
109
  - !ruby/object:Gem::Version
125
- version: 0.9.6
110
+ version: '0.12'
126
111
  - !ruby/object:Gem::Dependency
127
112
  name: listen
128
113
  requirement: !ruby/object:Gem::Requirement
129
- none: false
130
114
  requirements:
131
- - - ! '>='
115
+ - - "~>"
132
116
  - !ruby/object:Gem::Version
133
- version: 0.4.5
117
+ version: '2.4'
134
118
  type: :runtime
135
119
  prerelease: false
136
120
  version_requirements: !ruby/object:Gem::Requirement
137
- none: false
138
121
  requirements:
139
- - - ! '>='
122
+ - - "~>"
140
123
  - !ruby/object:Gem::Version
141
- version: 0.4.5
124
+ version: '2.4'
142
125
  - !ruby/object:Gem::Dependency
143
126
  name: haml
144
127
  requirement: !ruby/object:Gem::Requirement
145
- none: false
146
128
  requirements:
147
- - - ! '>='
129
+ - - "~>"
148
130
  - !ruby/object:Gem::Version
149
- version: 3.0.0
131
+ version: '3.1'
150
132
  type: :runtime
151
133
  prerelease: false
152
134
  version_requirements: !ruby/object:Gem::Requirement
153
- none: false
154
135
  requirements:
155
- - - ! '>='
136
+ - - "~>"
156
137
  - !ruby/object:Gem::Version
157
- version: 3.0.0
138
+ version: '3.1'
158
139
  - !ruby/object:Gem::Dependency
159
140
  name: sass
160
141
  requirement: !ruby/object:Gem::Requirement
161
- none: false
162
142
  requirements:
163
- - - ! '>='
143
+ - - "~>"
164
144
  - !ruby/object:Gem::Version
165
- version: 3.1.1
145
+ version: '3.1'
166
146
  type: :runtime
167
147
  prerelease: false
168
148
  version_requirements: !ruby/object:Gem::Requirement
169
- none: false
170
149
  requirements:
171
- - - ! '>='
150
+ - - "~>"
172
151
  - !ruby/object:Gem::Version
173
- version: 3.1.1
152
+ version: '3.1'
174
153
  - !ruby/object:Gem::Dependency
175
154
  name: coffee-script
176
155
  requirement: !ruby/object:Gem::Requirement
177
- none: false
178
156
  requirements:
179
- - - ! '>='
157
+ - - "~>"
180
158
  - !ruby/object:Gem::Version
181
- version: 2.2.0
159
+ version: '2.2'
182
160
  type: :runtime
183
161
  prerelease: false
184
162
  version_requirements: !ruby/object:Gem::Requirement
185
- none: false
186
163
  requirements:
187
- - - ! '>='
164
+ - - "~>"
188
165
  - !ruby/object:Gem::Version
189
- version: 2.2.0
166
+ version: '2.2'
190
167
  - !ruby/object:Gem::Dependency
191
168
  name: rspec
192
169
  requirement: !ruby/object:Gem::Requirement
193
- none: false
194
170
  requirements:
195
- - - ~>
171
+ - - "~>"
196
172
  - !ruby/object:Gem::Version
197
- version: 2.10.0
173
+ version: '2.10'
198
174
  type: :development
199
175
  prerelease: false
200
176
  version_requirements: !ruby/object:Gem::Requirement
201
- none: false
202
177
  requirements:
203
- - - ~>
178
+ - - "~>"
204
179
  - !ruby/object:Gem::Version
205
- version: 2.10.0
180
+ version: '2.10'
206
181
  - !ruby/object:Gem::Dependency
207
182
  name: yard
208
183
  requirement: !ruby/object:Gem::Requirement
209
- none: false
210
184
  requirements:
211
- - - ~>
185
+ - - "~>"
212
186
  - !ruby/object:Gem::Version
213
- version: 0.6.0
187
+ version: '0.8'
214
188
  type: :development
215
189
  prerelease: false
216
190
  version_requirements: !ruby/object:Gem::Requirement
217
- none: false
218
191
  requirements:
219
- - - ~>
192
+ - - "~>"
220
193
  - !ruby/object:Gem::Version
221
- version: 0.6.0
194
+ version: '0.8'
222
195
  - !ruby/object:Gem::Dependency
223
196
  name: bundler
224
197
  requirement: !ruby/object:Gem::Requirement
225
- none: false
226
198
  requirements:
227
- - - ! '>='
199
+ - - "~>"
228
200
  - !ruby/object:Gem::Version
229
- version: 1.1.0
201
+ version: '1.5'
230
202
  type: :development
231
203
  prerelease: false
232
204
  version_requirements: !ruby/object:Gem::Requirement
233
- none: false
234
205
  requirements:
235
- - - ! '>='
206
+ - - "~>"
236
207
  - !ruby/object:Gem::Version
237
- version: 1.1.0
208
+ version: '1.5'
238
209
  - !ruby/object:Gem::Dependency
239
210
  name: jeweler
240
211
  requirement: !ruby/object:Gem::Requirement
241
- none: false
242
212
  requirements:
243
- - - ~>
213
+ - - "~>"
244
214
  - !ruby/object:Gem::Version
245
- version: 1.8.0
215
+ version: '1.8'
246
216
  type: :development
247
217
  prerelease: false
248
218
  version_requirements: !ruby/object:Gem::Requirement
249
- none: false
250
219
  requirements:
251
- - - ~>
220
+ - - "~>"
252
221
  - !ruby/object:Gem::Version
253
- version: 1.8.0
222
+ version: '1.8'
254
223
  - !ruby/object:Gem::Dependency
255
224
  name: fakefs
256
225
  requirement: !ruby/object:Gem::Requirement
257
- none: false
258
226
  requirements:
259
- - - ~>
227
+ - - "~>"
260
228
  - !ruby/object:Gem::Version
261
- version: 0.4.0
229
+ version: '0.5'
262
230
  type: :development
263
231
  prerelease: false
264
232
  version_requirements: !ruby/object:Gem::Requirement
265
- none: false
266
233
  requirements:
267
- - - ~>
234
+ - - "~>"
268
235
  - !ruby/object:Gem::Version
269
- version: 0.4.0
236
+ version: '0.5'
270
237
  - !ruby/object:Gem::Dependency
271
238
  name: em-http-request
272
239
  requirement: !ruby/object:Gem::Requirement
273
- none: false
274
240
  requirements:
275
- - - ~>
241
+ - - "~>"
276
242
  - !ruby/object:Gem::Version
277
- version: 1.0.0
243
+ version: '1.0'
278
244
  type: :development
279
245
  prerelease: false
280
246
  version_requirements: !ruby/object:Gem::Requirement
281
- none: false
282
247
  requirements:
283
- - - ~>
248
+ - - "~>"
284
249
  - !ruby/object:Gem::Version
285
- version: 1.0.0
250
+ version: '1.0'
286
251
  description: A static file server for rich web apps that automatically compiles SASS,
287
252
  HAML, CoffeeScript and more
288
253
  email: micah@micahw.com
@@ -293,9 +258,9 @@ extra_rdoc_files:
293
258
  - LICENSE.txt
294
259
  - README.md
295
260
  files:
296
- - .document
297
- - .rspec
298
- - .travis.yml
261
+ - ".document"
262
+ - ".rspec"
263
+ - ".travis.yml"
299
264
  - Gemfile
300
265
  - LICENSE.txt
301
266
  - README.md
@@ -325,29 +290,25 @@ files:
325
290
  homepage: http://mwylde.github.com/slinky/
326
291
  licenses:
327
292
  - MIT
293
+ metadata: {}
328
294
  post_install_message:
329
295
  rdoc_options: []
330
296
  require_paths:
331
297
  - lib
332
298
  required_ruby_version: !ruby/object:Gem::Requirement
333
- none: false
334
299
  requirements:
335
- - - ! '>='
300
+ - - ">="
336
301
  - !ruby/object:Gem::Version
337
302
  version: '0'
338
- segments:
339
- - 0
340
- hash: 4080873917067961416
341
303
  required_rubygems_version: !ruby/object:Gem::Requirement
342
- none: false
343
304
  requirements:
344
- - - ! '>='
305
+ - - ">="
345
306
  - !ruby/object:Gem::Version
346
307
  version: '0'
347
308
  requirements: []
348
309
  rubyforge_project:
349
- rubygems_version: 1.8.24
310
+ rubygems_version: 2.2.2
350
311
  signing_key:
351
- specification_version: 3
312
+ specification_version: 4
352
313
  summary: Static file server for javascript apps
353
314
  test_files: []