guard-rack 1.3.1 → 1.4.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.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 9f3f1d76fdf26523714559cae171ecc150b07934
4
+ data.tar.gz: aee5f7a2b2bc99858dd5c3af575c9fc0273aeee1
5
+ SHA512:
6
+ metadata.gz: e63feae80068915a758a197805175537081922c869d3fc32871de6cb34c9874ced743e53f4c5febba1940296f95cdab8160f9922b57c4d4c91222b24d986b16f
7
+ data.tar.gz: f6485324937d2abd86589ef9d0092b98af7415b19fbab5253a05399e793f6d417decedfdad65f9d029674737d7b9acdb928d4824249597b147687b7478b5f6d8
data/.gitignore ADDED
@@ -0,0 +1,7 @@
1
+ *.gem
2
+ .bundle
3
+ Gemfile.lock
4
+ pkg/*
5
+ .rvmrc
6
+ .redcar
7
+
data/.rspec ADDED
@@ -0,0 +1,3 @@
1
+ --color
2
+ --format=documentation
3
+
data/.rubocop.yml ADDED
@@ -0,0 +1,21 @@
1
+ AllCops:
2
+ Excludes:
3
+ - vendor/**
4
+ - bin/**
5
+
6
+ LineLength:
7
+ Enabled: false
8
+
9
+ MethodLength:
10
+ Enabled: false
11
+
12
+ ClassLength:
13
+ Enabled: false
14
+
15
+ Documentation:
16
+ # don't require classes to be documented
17
+ Enabled: false
18
+
19
+ Encoding:
20
+ # no need to always specify encoding
21
+ Enabled: false
data/.travis.yml ADDED
@@ -0,0 +1,3 @@
1
+ rvm:
2
+ - 1.9.3
3
+ - jruby-19mode
data/CHANGELOG.md ADDED
@@ -0,0 +1,39 @@
1
+ 1.4.0 (1/28/2014)
2
+ =================
3
+
4
+ * Ruby 1.8.7 and 1.9.2 are no longer supported - [@dblock](https://github.com/dblock).
5
+ * Implemented Rubocop, Ruby linter - [@dblock](https://github.com/dblock).
6
+ * [#13](https://github.com/dblock/guard-rack/pull/13): Fix: do not lock a specific version of Rack - [@Nerian](https://github.com/Nerian).
7
+
8
+ 1.3.1 (1/16/2013)
9
+ =================
10
+
11
+ * [#12](https://github.com/dblock/guard-rack/issues/12): Fix: could not load 'guard/rack', added missing `ffi` into Gemfile - [@dblock](https://github.com/dblock).
12
+
13
+ 1.3 (1/15/2013)
14
+ ===============
15
+
16
+ * [#11](https://github.com/dblock/guard-rack/pull/11): Use [spoon](https://github.com/headius/spoon) instead of `system()`, removes the need for `.pid` files - [@viking](https://github.com/viking), [@dblock](https://github.com/dblock).
17
+
18
+ 1.2.2 (12/19/2012)
19
+ ==================
20
+
21
+ * [#10](https://github.com/dblock/guard-rack/pull/10): Added ability to specify rackup config - [@kgfullerton](https://github.com/kgfullerton).
22
+
23
+ 1.2.1 (6/31/2012)
24
+ =================
25
+
26
+ * [#9](https://github.com/dblock/guard-rack/pull/3): Added ability to specify server - [@rubycut](https://github.com/rubycut).
27
+
28
+ 1.1 (06/06/2012)
29
+ ================
30
+
31
+ * Now requires Guard 1.1.
32
+ * [#3](https://github.com/dblock/guard-rack/pull/3): Changed kill signal from `KILL` to `INT` - [@tombh](https://github.com/tombh).
33
+ * [#4](https://github.com/dblock/guard-rack/pull/4): Changed deprecated `run_on_change` to `run_on_changes` - [@tombh](https://github.com/tombh).
34
+
35
+ 1.0 (02/27/2012)
36
+ ================
37
+
38
+ * Initial public release - [@dblock](https://github.com/dblock).
39
+
data/Gemfile ADDED
@@ -0,0 +1,20 @@
1
+ source "http://rubygems.org"
2
+
3
+ gem "guard"
4
+ gem "ffi"
5
+ gem "spoon"
6
+
7
+ group :development, :test do
8
+ gem "rake"
9
+ gem "bundler"
10
+ gem "rspec"
11
+ gem "guard-rspec"
12
+ gem "fakefs"
13
+ gem "mocha"
14
+ gem "rack"
15
+ gem 'growl'
16
+ gem 'rb-inotify', require: false
17
+ gem 'rb-fsevent', require: false
18
+ gem 'rb-fchange', require: false
19
+ gem 'rubocop'
20
+ end
data/Guardfile ADDED
@@ -0,0 +1,5 @@
1
+ guard 'rspec', :version => 2 do
2
+ watch(%r{^spec/.+_spec\.rb})
3
+ watch(%r{^lib/(.+)\.rb}) { |m| "spec/lib/#{m[1]}_spec.rb" }
4
+ watch('spec/spec_helper.rb') { "spec" }
5
+ end
data/Rakefile ADDED
@@ -0,0 +1,27 @@
1
+ require 'rubygems'
2
+ require 'bundler/gem_tasks'
3
+
4
+ require File.expand_path('../lib/guard/rack/version', __FILE__)
5
+
6
+ begin
7
+ Bundler.setup(:default, :development)
8
+ rescue Bundler::BundlerError => e
9
+ $stderr.puts e.message
10
+ $stderr.puts "Run `bundle install` to install missing gems"
11
+ exit e.status_code
12
+ end
13
+
14
+ require 'rake'
15
+ require 'rspec/core'
16
+ require 'rspec/core/rake_task'
17
+
18
+ RSpec::Core::RakeTask.new(:spec) do |spec|
19
+ spec.pattern = FileList['spec/**/*_spec.rb']
20
+ end
21
+
22
+ require 'rainbow/ext/string' unless String.respond_to?(:color)
23
+ require 'rubocop/rake_task'
24
+ Rubocop::RakeTask.new(:rubocop)
25
+
26
+ task default: [:rubocop, :spec]
27
+
@@ -0,0 +1,30 @@
1
+ # -*- encoding: utf-8 -*-
2
+ require File.expand_path('../lib/guard/rack/version', __FILE__)
3
+
4
+ Gem::Specification.new do |gem|
5
+ gem.authors = ["Daniel Doubrovkine"]
6
+
7
+ gem.email = ["dblock@dblock.org"]
8
+ gem.description = "Automatically reloads your Rack based app on file change using Guard."
9
+ gem.homepage = "https://github.com/dblock/guard-rack"
10
+ gem.summary = gem.description
11
+ gem.license = 'MIT'
12
+
13
+ gem.name = "guard-rack"
14
+ gem.require_paths = ["lib"]
15
+ gem.files = `git ls-files`.split("\n")
16
+ gem.version = Guard::RackVersion::VERSION
17
+
18
+ gem.add_dependency "guard"
19
+ gem.add_dependency "ffi"
20
+ gem.add_dependency "spoon"
21
+ gem.add_dependency "rb-inotify"
22
+ gem.add_dependency "libnotify"
23
+
24
+ gem.add_development_dependency "rake"
25
+ gem.add_development_dependency "bundler"
26
+ gem.add_development_dependency "rspec"
27
+ gem.add_development_dependency "fakefs"
28
+ gem.add_development_dependency "mocha"
29
+ gem.add_development_dependency "rack"
30
+ end
@@ -4,7 +4,6 @@ require 'spoon'
4
4
 
5
5
  module Guard
6
6
  class RackRunner
7
-
8
7
  attr_reader :options, :pid
9
8
 
10
9
  def initialize(options)
@@ -32,75 +31,69 @@ module Guard
32
31
  end
33
32
 
34
33
  def restart
35
- stop and start
34
+ stop && start
36
35
  end
37
36
 
38
37
  private
39
38
 
40
- def build_rack_command
41
- command = %w{rackup}
42
- command.push(
43
- options[:config],
44
- '--env', options[:environment].to_s,
45
- '--port', options[:port].to_s
46
- )
39
+ def build_rack_command
40
+ command = %w{rackup}
41
+ command.push(
42
+ options[:config],
43
+ '--env', options[:environment].to_s,
44
+ '--port', options[:port].to_s
45
+ )
47
46
 
48
- command << '--daemonize' if options[:daemon]
49
- command << '--debug' if options[:debugger]
50
- command.push("--server", options[:server].to_s) if options[:server]
47
+ command << '--daemonize' if options[:daemon]
48
+ command << '--debug' if options[:debugger]
49
+ command.push('--server', options[:server].to_s) if options[:server]
51
50
 
52
- command
53
- end
51
+ command
52
+ end
54
53
 
55
- def kill(pid, force = false)
56
- result = -1
57
-
58
- UI.debug("Trying to kill Rack (PID #{pid})...")
59
- if !force
60
- Process.kill("INT", pid)
61
- begin
62
- Timeout.timeout(options[:timeout]) do
63
- _, status = Process.wait2(pid)
64
- result = status.exitstatus
65
- UI.debug("Killed Rack (Exit status: #{result})")
66
- end
67
- rescue Timeout::Error
68
- UI.debug("Couldn't kill Rack with INT, switching to TERM")
69
- force = true
54
+ def kill(pid, force = false)
55
+ result = -1
56
+
57
+ UI.debug("Trying to kill Rack (PID #{pid})...")
58
+ unless force
59
+ Process.kill('INT', pid)
60
+ begin
61
+ Timeout.timeout(options[:timeout]) do
62
+ _, status = Process.wait2(pid)
63
+ result = status.exitstatus
64
+ UI.debug("Killed Rack (Exit status: #{result})")
70
65
  end
66
+ rescue Timeout::Error
67
+ UI.debug("Couldn't kill Rack with INT, switching to TERM")
68
+ force = true
71
69
  end
70
+ end
72
71
 
73
- if force
74
- Process.kill("TERM", pid)
75
- end
72
+ Process.kill('TERM', pid) if force
76
73
 
77
- result
78
- end
74
+ result
75
+ end
79
76
 
80
- def run_rack_command!
81
- command = build_rack_command
82
- UI.debug("Running Rack with command: #{command.inspect}")
83
- spawn(*command)
84
- end
77
+ def run_rack_command!
78
+ command = build_rack_command
79
+ UI.debug("Running Rack with command: #{command.inspect}")
80
+ spawn(*command)
81
+ end
85
82
 
86
- def spawn(* args)
87
- Spoon.spawnp(* args)
88
- end
83
+ def spawn(* args)
84
+ Spoon.spawnp(* args)
85
+ end
89
86
 
90
- def kill_unmanaged_pid!
91
- if pid = unmanaged_pid
92
- kill(pid, true)
93
- end
94
- end
87
+ def kill_unmanaged_pid!
88
+ pid = unmanaged_pid
89
+ kill(pid, true) if pid
90
+ end
95
91
 
96
- def unmanaged_pid
97
- %x{lsof -n -i TCP:#{options[:port]}}.each_line { |line|
98
- if line["*:#{options[:port]} "]
99
- return line.split("\s")[1].to_i
100
- end
101
- }
102
- nil
92
+ def unmanaged_pid
93
+ %x{lsof -n -i TCP:#{options[:port]}}.each_line do |line|
94
+ return line.split("\s")[1].to_i if line["*:#{options[:port]} "]
103
95
  end
104
-
96
+ nil
97
+ end
105
98
  end
106
99
  end
@@ -1,6 +1,5 @@
1
1
  module Guard
2
2
  module RackVersion
3
- VERSION = '1.3.1'
3
+ VERSION = '1.4.0'
4
4
  end
5
5
  end
6
-
data/lib/guard/rack.rb CHANGED
@@ -8,13 +8,13 @@ module Guard
8
8
  attr_reader :options, :runner
9
9
 
10
10
  DEFAULT_OPTIONS = {
11
- :port => 9292,
12
- :environment => 'development',
13
- :start_on_start => true,
14
- :force_run => false,
15
- :timeout => 20,
16
- :debugger => false,
17
- :config => 'config.ru'
11
+ port: 9292,
12
+ environment: 'development',
13
+ start_on_start: true,
14
+ force_run: false,
15
+ timeout: 20,
16
+ debugger: false,
17
+ config: 'config.ru'
18
18
  }
19
19
 
20
20
  def initialize(watchers = [], options = {})
@@ -24,25 +24,25 @@ module Guard
24
24
  end
25
25
 
26
26
  def start
27
- server = options[:server] ? "#{options[:server]} and " : ""
27
+ server = options[:server] ? "#{options[:server]} and " : ''
28
28
  UI.info "Guard::Rack will now restart your app on port #{options[:port]} using #{server}#{options[:environment]} environment."
29
29
  reload if options[:start_on_start]
30
30
  end
31
31
 
32
32
  def reload
33
- UI.info "Restarting Rack..."
34
- Notifier.notify("Rack restarting on port #{options[:port]} in #{options[:environment]} environment...", :title => "Restarting Rack...", :image => :pending)
33
+ UI.info 'Restarting Rack...'
34
+ Notifier.notify("Rack restarting on port #{options[:port]} in #{options[:environment]} environment...", title: 'Restarting Rack...', image: :pending)
35
35
  if runner.restart
36
36
  UI.info "Rack restarted, pid #{runner.pid}"
37
- Notifier.notify("Rack restarted on port #{options[:port]}.", :title => "Rack restarted!", :image => :success)
37
+ Notifier.notify("Rack restarted on port #{options[:port]}.", title: 'Rack restarted!', image: :success)
38
38
  else
39
- UI.info "Rack NOT restarted, check your log files."
40
- Notifier.notify("Rack NOT restarted, check your log files.", :title => "Rack NOT restarted!", :image => :failed)
39
+ UI.info 'Rack NOT restarted, check your log files.'
40
+ Notifier.notify('Rack NOT restarted, check your log files.', title: 'Rack NOT restarted!', image: :failed)
41
41
  end
42
42
  end
43
43
 
44
44
  def stop
45
- Notifier.notify("Until next time...", :title => "Rack shutting down.", :image => :pending)
45
+ Notifier.notify('Until next time...', title: 'Rack shutting down.', image: :pending)
46
46
  runner.stop
47
47
  end
48
48
 
@@ -51,4 +51,3 @@ module Guard
51
51
  end
52
52
  end
53
53
  end
54
-
data/lib/guard-rack.rb CHANGED
@@ -1,2 +1 @@
1
1
  require 'guard/rack'
2
-
@@ -0,0 +1,11 @@
1
+ class HelloWorld
2
+ def call(env)
3
+ return [
4
+ 200,
5
+ {'Content-Type' => 'text/html'},
6
+ ["Hello world!"]
7
+ ]
8
+ end
9
+ end
10
+
11
+ run HelloWorld.new
@@ -0,0 +1,22 @@
1
+ require 'spec_helper'
2
+ require 'guard/rack/runner'
3
+
4
+ describe 'Integration' do
5
+ let(:runner) { Guard::RackRunner.new(options) }
6
+ let(:options) { { environment: 'development', port: 3000, config: 'spec/lib/guard/integration.ru' } }
7
+
8
+ describe '#start' do
9
+ context 'run' do
10
+ it 'should run' do
11
+ runner.start.should be_true
12
+ pid = runner.pid
13
+ pid.should_not be_nil
14
+ Process.getpgid(pid).should be > 0
15
+ runner.stop
16
+ expect do
17
+ Process.getpgid(pid)
18
+ end.to raise_error Errno::ESRCH
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,91 @@
1
+ require 'spec_helper'
2
+ require 'guard/rack'
3
+
4
+ describe Guard::Rack do
5
+ let(:guard) { Guard::Rack.new(watchers, options) }
6
+ let(:watchers) { [] }
7
+ let(:options) { {} }
8
+
9
+ describe '#initialize' do
10
+ it 'should initialize with options' do
11
+ guard
12
+
13
+ guard.runner.options[:port].should == 9292
14
+ end
15
+ end
16
+
17
+ describe '#start' do
18
+ let(:ui_expectation) { Guard::UI.expects(:info).with(regexp_matches(/#{Guard::Rack::DEFAULT_OPTIONS[:port]}/)) }
19
+
20
+ context 'start on start' do
21
+ it 'should show the right message and run startup' do
22
+ guard.expects(:reload).once
23
+ ui_expectation
24
+ guard.start
25
+ end
26
+ end
27
+
28
+ context 'no start on start' do
29
+ let(:options) { { start_on_start: false } }
30
+
31
+ it 'should show the right message and not run startup' do
32
+ guard.expects(:reload).never
33
+ ui_expectation
34
+ guard.start
35
+ end
36
+ end
37
+ end
38
+
39
+ describe '#reload' do
40
+ let(:pid) { '12345' }
41
+
42
+ before do
43
+ Guard::UI.expects(:info).with('Restarting Rack...')
44
+ Guard::Notifier.expects(:notify).with(regexp_matches(/Rack restarting/), has_entry(image: :pending))
45
+ Guard::RackRunner.any_instance.stubs(:pid).returns(pid)
46
+ end
47
+
48
+ let(:runner_stub) { Guard::RackRunner.any_instance.stubs(:restart) }
49
+
50
+ context 'with pid file' do
51
+ before do
52
+ runner_stub.returns(true)
53
+ end
54
+
55
+ it 'should restart and show the pid file' do
56
+ Guard::UI.expects(:info).with(regexp_matches(/#{pid}/))
57
+ Guard::Notifier.expects(:notify).with(regexp_matches(/Rack restarted/), has_entry(image: :success))
58
+
59
+ guard.reload
60
+ end
61
+ end
62
+
63
+ context 'no pid file' do
64
+ before do
65
+ runner_stub.returns(false)
66
+ end
67
+
68
+ it 'should restart and show the pid file' do
69
+ Guard::UI.expects(:info).with(regexp_matches(/#{pid}/)).never
70
+ Guard::UI.expects(:info).with(regexp_matches(/Rack NOT restarted/))
71
+ Guard::Notifier.expects(:notify).with(regexp_matches(/Rack NOT restarted/), has_entry(image: :failed))
72
+
73
+ guard.reload
74
+ end
75
+ end
76
+ end
77
+
78
+ describe '#stop' do
79
+ it 'should stop correctly' do
80
+ Guard::Notifier.expects(:notify).with('Until next time...', anything)
81
+ guard.stop
82
+ end
83
+ end
84
+
85
+ describe '#run_on_changes' do
86
+ it 'should reload on change' do
87
+ guard.expects(:reload).once
88
+ guard.run_on_changes([])
89
+ end
90
+ end
91
+ end
@@ -0,0 +1,188 @@
1
+ require 'spec_helper'
2
+ require 'guard/rack/runner'
3
+
4
+ describe Guard::RackRunner do
5
+ let(:runner) { Guard::RackRunner.new(options) }
6
+ let(:environment) { 'development' }
7
+ let(:port) { 3000 }
8
+
9
+ let(:default_options) { { environment: environment, port: port, config: 'config.ru' } }
10
+ let(:options) { default_options }
11
+
12
+ before do
13
+ Guard::UI.stubs(:debug)
14
+ end
15
+
16
+ describe '#pid' do
17
+ context 'after running' do
18
+ let(:pid) { 1234 }
19
+
20
+ before do
21
+ runner.stubs(:spawn).returns(pid)
22
+ runner.start
23
+ end
24
+
25
+ it 'should not be nil' do
26
+ runner.pid.should == pid
27
+ end
28
+ end
29
+
30
+ context 'before running' do
31
+ it 'should return nil' do
32
+ runner.pid.should be_nil
33
+ end
34
+ end
35
+ end
36
+
37
+ describe '#build_rack_command' do
38
+ context 'no daemon' do
39
+ it 'should not have a daemon switch' do
40
+ runner.send(:build_rack_command).should_not include('--daemonize')
41
+ end
42
+ end
43
+
44
+ context 'daemon' do
45
+ let(:options) { default_options.merge(daemon: true) }
46
+
47
+ it 'should have a daemon switch' do
48
+ runner.send(:build_rack_command).should include('--daemonize')
49
+ end
50
+ end
51
+
52
+ context 'debugger' do
53
+ let(:options) { default_options.merge(debugger: true) }
54
+
55
+ it 'should have a debugger switch' do
56
+ runner.send(:build_rack_command).should include('--debug')
57
+ end
58
+ end
59
+
60
+ context 'server' do
61
+ let(:options) { default_options.merge(server: 'thin') }
62
+
63
+ it 'should honour server switch' do
64
+ command = runner.send(:build_rack_command)
65
+ index = command.index('--server')
66
+ index.should be >= 0
67
+ command[index + 1].should == 'thin'
68
+ end
69
+ end
70
+
71
+ context 'config file' do
72
+ context 'default' do
73
+ it 'should default to config.ru' do
74
+ runner.send(:build_rack_command).should include('config.ru')
75
+ end
76
+ end
77
+
78
+ context 'custom' do
79
+ let(:options) { default_options.merge(config: 'config2.ru') }
80
+ it 'should honour config option' do
81
+ default_options.merge(config: 'config2.ru')
82
+ runner.send(:build_rack_command).should include('config2.ru')
83
+ end
84
+ end
85
+ end
86
+ end
87
+
88
+ describe '#start' do
89
+ let(:unmanaged_pid) { 4567 }
90
+ let(:pid) { 1234 }
91
+ let(:kill_expectation) { Process.expects(:kill).with('TERM', unmanaged_pid) }
92
+
93
+ before do
94
+ runner.expects(:spawn).once.returns(pid)
95
+ runner.stubs(:unmanaged_pid).returns(unmanaged_pid)
96
+ end
97
+
98
+ context 'do not force run' do
99
+ before do
100
+ kill_expectation.never
101
+ end
102
+
103
+ it 'should act properly' do
104
+ runner.start.should be_true
105
+ end
106
+ end
107
+
108
+ context 'force run' do
109
+ let(:options) { default_options.merge(force_run: true) }
110
+
111
+ before do
112
+ kill_expectation.once
113
+ Process.expects(:wait2).never # don't wait on non-child processes
114
+ end
115
+
116
+ it 'should act properly' do
117
+ runner.start.should be_true
118
+ end
119
+ end
120
+ end
121
+
122
+ describe '#stop' do
123
+
124
+ context 'pid exists' do
125
+ let(:pid) { 12_345 }
126
+ let(:status_stub) { stub('process exit status') }
127
+ let(:wait_stub) { Process.stubs(:wait2) }
128
+
129
+ before do
130
+ runner.stubs(:spawn).returns(pid)
131
+ runner.start
132
+
133
+ Process.expects(:kill).with('INT', pid)
134
+ end
135
+
136
+ context 'rackup returns successful exit status' do
137
+ before do
138
+ wait_stub.returns([pid, status_stub])
139
+ status_stub.stubs(:exitstatus).returns(0)
140
+ end
141
+
142
+ it 'should return true' do
143
+ runner.stop.should be_true
144
+ end
145
+ end
146
+
147
+ context 'rackup returns unsuccessful exit status' do
148
+ before do
149
+ Guard::UI.stubs(:info)
150
+ wait_stub.returns([pid, status_stub])
151
+ status_stub.stubs(:exitstatus).returns(1)
152
+ end
153
+
154
+ it 'should return false' do
155
+ runner.stop.should be_false
156
+ end
157
+
158
+ it 'should send some kind of message to UI.info' do
159
+ Guard::UI.expects(:info).with(regexp_matches(/.+/))
160
+ runner.stop
161
+ end
162
+ end
163
+
164
+ context 'kill times out' do
165
+ before do
166
+ Guard::UI.stubs(:info)
167
+ wait_stub.raises(Timeout::Error)
168
+ Process.expects(:kill).with('TERM', pid)
169
+ end
170
+
171
+ it 'should return false' do
172
+ runner.stop.should be_false
173
+ end
174
+
175
+ it 'should send some kind of message to UI.info' do
176
+ Guard::UI.expects(:info).with(regexp_matches(/.+/))
177
+ runner.stop
178
+ end
179
+ end
180
+ end
181
+
182
+ context 'pid does not exist' do
183
+ it 'should return true' do
184
+ runner.stop.should be_true
185
+ end
186
+ end
187
+ end
188
+ end
@@ -0,0 +1,9 @@
1
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
2
+ $LOAD_PATH.unshift(File.dirname(__FILE__))
3
+
4
+ require 'guard-rack'
5
+ require 'mocha_standalone'
6
+
7
+ RSpec.configure do |c|
8
+ c.mock_with :mocha
9
+ end
metadata CHANGED
@@ -1,265 +1,219 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: guard-rack
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.1
5
- prerelease:
4
+ version: 1.4.0
6
5
  platform: ruby
7
6
  authors:
8
7
  - Daniel Doubrovkine
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2013-01-16 00:00:00.000000000 Z
11
+ date: 2014-01-28 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: guard
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
- - - ~>
17
+ - - '>='
20
18
  - !ruby/object:Gem::Version
21
- version: '1.1'
19
+ version: '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: '1.1'
26
+ version: '0'
30
27
  - !ruby/object:Gem::Dependency
31
28
  name: ffi
32
29
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
30
  requirements:
35
- - - ~>
31
+ - - '>='
36
32
  - !ruby/object:Gem::Version
37
- version: 1.3.1
33
+ version: '0'
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: 1.3.1
40
+ version: '0'
46
41
  - !ruby/object:Gem::Dependency
47
42
  name: spoon
48
43
  requirement: !ruby/object:Gem::Requirement
49
- none: false
50
44
  requirements:
51
- - - ~>
45
+ - - '>='
52
46
  - !ruby/object:Gem::Version
53
- version: 0.0.1
47
+ version: '0'
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.0.1
54
+ version: '0'
62
55
  - !ruby/object:Gem::Dependency
63
56
  name: rb-inotify
64
57
  requirement: !ruby/object:Gem::Requirement
65
- none: false
66
58
  requirements:
67
- - - ! '>='
59
+ - - '>='
68
60
  - !ruby/object:Gem::Version
69
- version: 0.5.1
61
+ version: '0'
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.5.1
68
+ version: '0'
78
69
  - !ruby/object:Gem::Dependency
79
70
  name: libnotify
80
71
  requirement: !ruby/object:Gem::Requirement
81
- none: false
82
72
  requirements:
83
- - - ~>
73
+ - - '>='
84
74
  - !ruby/object:Gem::Version
85
- version: 0.1.3
75
+ version: '0'
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: 0.1.3
82
+ version: '0'
94
83
  - !ruby/object:Gem::Dependency
95
84
  name: rake
96
85
  requirement: !ruby/object:Gem::Requirement
97
- none: false
98
86
  requirements:
99
- - - ! '>='
87
+ - - '>='
100
88
  - !ruby/object:Gem::Version
101
89
  version: '0'
102
90
  type: :development
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: '0'
110
97
  - !ruby/object:Gem::Dependency
111
98
  name: bundler
112
99
  requirement: !ruby/object:Gem::Requirement
113
- none: false
114
100
  requirements:
115
- - - ~>
101
+ - - '>='
116
102
  - !ruby/object:Gem::Version
117
- version: '1.0'
103
+ version: '0'
118
104
  type: :development
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: '1.0'
110
+ version: '0'
126
111
  - !ruby/object:Gem::Dependency
127
112
  name: rspec
128
113
  requirement: !ruby/object:Gem::Requirement
129
- none: false
130
- requirements:
131
- - - ~>
132
- - !ruby/object:Gem::Version
133
- version: '2.6'
134
- type: :development
135
- prerelease: false
136
- version_requirements: !ruby/object:Gem::Requirement
137
- none: false
138
- requirements:
139
- - - ~>
140
- - !ruby/object:Gem::Version
141
- version: '2.6'
142
- - !ruby/object:Gem::Dependency
143
- name: jeweler
144
- requirement: !ruby/object:Gem::Requirement
145
- none: false
146
- requirements:
147
- - - ~>
148
- - !ruby/object:Gem::Version
149
- version: '1.6'
150
- type: :development
151
- prerelease: false
152
- version_requirements: !ruby/object:Gem::Requirement
153
- none: false
154
114
  requirements:
155
- - - ~>
156
- - !ruby/object:Gem::Version
157
- version: '1.6'
158
- - !ruby/object:Gem::Dependency
159
- name: guard-rspec
160
- requirement: !ruby/object:Gem::Requirement
161
- none: false
162
- requirements:
163
- - - ! '>='
115
+ - - '>='
164
116
  - !ruby/object:Gem::Version
165
117
  version: '0'
166
118
  type: :development
167
119
  prerelease: false
168
120
  version_requirements: !ruby/object:Gem::Requirement
169
- none: false
170
121
  requirements:
171
- - - ! '>='
122
+ - - '>='
172
123
  - !ruby/object:Gem::Version
173
124
  version: '0'
174
125
  - !ruby/object:Gem::Dependency
175
126
  name: fakefs
176
127
  requirement: !ruby/object:Gem::Requirement
177
- none: false
178
128
  requirements:
179
- - - ! '>='
129
+ - - '>='
180
130
  - !ruby/object:Gem::Version
181
131
  version: '0'
182
132
  type: :development
183
133
  prerelease: false
184
134
  version_requirements: !ruby/object:Gem::Requirement
185
- none: false
186
135
  requirements:
187
- - - ! '>='
136
+ - - '>='
188
137
  - !ruby/object:Gem::Version
189
138
  version: '0'
190
139
  - !ruby/object:Gem::Dependency
191
140
  name: mocha
192
141
  requirement: !ruby/object:Gem::Requirement
193
- none: false
194
142
  requirements:
195
- - - ! '>='
143
+ - - '>='
196
144
  - !ruby/object:Gem::Version
197
145
  version: '0'
198
146
  type: :development
199
147
  prerelease: false
200
148
  version_requirements: !ruby/object:Gem::Requirement
201
- none: false
202
149
  requirements:
203
- - - ! '>='
150
+ - - '>='
204
151
  - !ruby/object:Gem::Version
205
152
  version: '0'
206
153
  - !ruby/object:Gem::Dependency
207
154
  name: rack
208
155
  requirement: !ruby/object:Gem::Requirement
209
- none: false
210
156
  requirements:
211
- - - ! '>='
157
+ - - '>='
212
158
  - !ruby/object:Gem::Version
213
159
  version: '0'
214
160
  type: :development
215
161
  prerelease: false
216
162
  version_requirements: !ruby/object:Gem::Requirement
217
- none: false
218
163
  requirements:
219
- - - ! '>='
164
+ - - '>='
220
165
  - !ruby/object:Gem::Version
221
166
  version: '0'
222
- description:
223
- email: dblock@dblock.org
167
+ description: Automatically reloads your Rack based app on file change using Guard.
168
+ email:
169
+ - dblock@dblock.org
224
170
  executables: []
225
171
  extensions: []
226
- extra_rdoc_files:
172
+ extra_rdoc_files: []
173
+ files:
174
+ - .gitignore
175
+ - .rspec
176
+ - .rubocop.yml
177
+ - .travis.yml
178
+ - CHANGELOG.md
179
+ - Gemfile
180
+ - Guardfile
227
181
  - LICENSE.md
228
182
  - README.md
229
- files:
183
+ - Rakefile
184
+ - guard-rack.gemspec
230
185
  - lib/guard-rack.rb
231
186
  - lib/guard/rack.rb
232
187
  - lib/guard/rack/runner.rb
233
188
  - lib/guard/rack/templates/Guardfile
234
189
  - lib/guard/rack/version.rb
235
- - LICENSE.md
236
- - README.md
237
- homepage: http://github.com/dblock/guard-rack
190
+ - spec/lib/guard/integration.ru
191
+ - spec/lib/guard/integration_spec.rb
192
+ - spec/lib/guard/rack_spec.rb
193
+ - spec/lib/guard/runner_spec.rb
194
+ - spec/spec_helper.rb
195
+ homepage: https://github.com/dblock/guard-rack
238
196
  licenses:
239
197
  - MIT
198
+ metadata: {}
240
199
  post_install_message:
241
200
  rdoc_options: []
242
201
  require_paths:
243
202
  - lib
244
203
  required_ruby_version: !ruby/object:Gem::Requirement
245
- none: false
246
204
  requirements:
247
- - - ! '>='
205
+ - - '>='
248
206
  - !ruby/object:Gem::Version
249
207
  version: '0'
250
- segments:
251
- - 0
252
- hash: 169278257
253
208
  required_rubygems_version: !ruby/object:Gem::Requirement
254
- none: false
255
209
  requirements:
256
- - - ! '>='
210
+ - - '>='
257
211
  - !ruby/object:Gem::Version
258
212
  version: '0'
259
213
  requirements: []
260
214
  rubyforge_project:
261
- rubygems_version: 1.8.24
215
+ rubygems_version: 2.0.14
262
216
  signing_key:
263
- specification_version: 3
264
- summary: Restart Rack when files change.
217
+ specification_version: 4
218
+ summary: Automatically reloads your Rack based app on file change using Guard.
265
219
  test_files: []