guard-rails 0.6.0 → 0.6.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 67204488cf9dc70a5f92d1f1cca1ff87b0936a2c
4
- data.tar.gz: d3375c351092f169bc3a3a57e67f670ef91367e4
3
+ metadata.gz: badcb2d7fa378fb0f9fc7bc4a4922642f6d1b24b
4
+ data.tar.gz: 80d9c099b2b8b7824cf3bfa186f4dd1960f9e9d1
5
5
  SHA512:
6
- metadata.gz: 965491b5a14754d3ca52255568edd514970979a3c08c5309a3c748c0c2fcd067c733a29396ef231b19159709e95f61878bb2be54b2cb81ccec4282cc3575b8af
7
- data.tar.gz: 09845a32d24d05b0aa25905453489888d6bdab523bd90b0d76b6afc430004e7f1f411767a66d9de373a17c5d477cc5e7dec77e4da6b2567a5d1e75b8a5b35450
6
+ metadata.gz: 364a7e4234fa9efae4af2dcb8319dc2ea712db73d46e0b1492e4486c0b536f04979bb92cc8f2e0a8583bae0640f2a7ce67e64fc69ef36574037c04519a17bc34
7
+ data.tar.gz: 84c3dde82a373dd602a5aeead8a8f4f45debbcaf0ae5cbd404e0ea7b3aa13b5632642246856bed09d7ab9ca19a3ac5b178b517ef0bf1d86e57de8b191b2b1436
data/.gitignore CHANGED
@@ -6,3 +6,5 @@
6
6
  .bundle/
7
7
  pkg/*
8
8
  tmp/
9
+ coverage/
10
+
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- guard-rails (0.6.0)
4
+ guard-rails (0.6.1)
5
5
  guard (~> 2.0)
6
6
 
7
7
  GEM
@@ -9,16 +9,16 @@ GEM
9
9
  specs:
10
10
  celluloid (0.16.0)
11
11
  timers (~> 4.0.0)
12
- codeclimate-test-reporter (0.4.0)
12
+ codeclimate-test-reporter (0.4.1)
13
13
  simplecov (>= 0.7.1, < 1.0.0)
14
14
  coderay (1.1.0)
15
15
  diff-lcs (1.2.5)
16
16
  docile (1.1.5)
17
- fakefs (0.5.3)
18
- ffi (1.9.3)
19
- ffi (1.9.3-java)
17
+ fakefs (0.6.0)
18
+ ffi (1.9.6)
19
+ ffi (1.9.6-java)
20
20
  formatador (0.2.5)
21
- guard (2.6.1)
21
+ guard (2.7.0)
22
22
  formatador (>= 0.2.4)
23
23
  listen (~> 2.7)
24
24
  lumberjack (~> 1.0)
@@ -32,9 +32,9 @@ GEM
32
32
  rspec (>= 2.14, < 4.0)
33
33
  hitimes (1.2.2)
34
34
  hitimes (1.2.2-java)
35
- libnotify (0.8.3)
35
+ libnotify (0.8.4)
36
36
  ffi (>= 1.0.11)
37
- listen (2.7.9)
37
+ listen (2.7.11)
38
38
  celluloid (>= 0.15.2)
39
39
  rb-fsevent (>= 0.9.3)
40
40
  rb-inotify (>= 0.9)
@@ -59,23 +59,23 @@ GEM
59
59
  rspec-core (~> 3.1.0)
60
60
  rspec-expectations (~> 3.1.0)
61
61
  rspec-mocks (~> 3.1.0)
62
- rspec-core (3.1.2)
62
+ rspec-core (3.1.7)
63
63
  rspec-support (~> 3.1.0)
64
- rspec-expectations (3.1.0)
64
+ rspec-expectations (3.1.2)
65
65
  diff-lcs (>= 1.2.0, < 2.0)
66
66
  rspec-support (~> 3.1.0)
67
- rspec-mocks (3.1.0)
67
+ rspec-mocks (3.1.3)
68
68
  rspec-support (~> 3.1.0)
69
- rspec-support (3.1.0)
70
- simplecov (0.9.0)
69
+ rspec-support (3.1.2)
70
+ simplecov (0.9.1)
71
71
  docile (~> 1.1.0)
72
- multi_json
72
+ multi_json (~> 1.0)
73
73
  simplecov-html (~> 0.8.0)
74
74
  simplecov-html (0.8.0)
75
75
  slop (3.6.0)
76
76
  spoon (0.0.4)
77
77
  ffi
78
- terminal-notifier-guard (1.5.3)
78
+ terminal-notifier-guard (1.6.1)
79
79
  thor (0.19.1)
80
80
  timers (4.0.1)
81
81
  hitimes
data/README.md CHANGED
@@ -75,6 +75,7 @@ And I will be there as your call.
75
75
  * Sidney Burks
76
76
  * Paul Schyska
77
77
  * Adam Michel
78
+ * Cezary Baginski
78
79
  * Nathan Broadbent
79
80
  * Tim Preston
80
81
  * killphi
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.6.0
1
+ 0.6.1
data/lib/guard/rails.rb CHANGED
@@ -1,10 +1,11 @@
1
1
  require 'guard'
2
2
  require 'guard/plugin'
3
- require 'guard/rails/runner'
4
3
  require 'rbconfig'
5
4
 
6
5
  module Guard
7
6
  class Rails < Plugin
7
+ require 'guard/rails/runner'
8
+
8
9
  # Use gem `version` to support versioning
9
10
  # is_versioned
10
11
 
@@ -29,7 +30,7 @@ module Guard
29
30
  super
30
31
  @options = DEFAULT_OPTIONS.merge(options)
31
32
 
32
- @runner = RailsRunner.new(@options)
33
+ @runner = Runner.new(@options)
33
34
  end
34
35
 
35
36
  def start
@@ -1,173 +1,186 @@
1
1
  require 'fileutils'
2
2
 
3
3
  module Guard
4
- class RailsRunner
5
- MAX_WAIT_COUNT = 10
4
+ class Rails
5
+ class Runner
6
+ MAX_WAIT_COUNT = 10
6
7
 
7
- attr_reader :options
8
+ attr_reader :options
8
9
 
9
- def initialize(options)
10
- @options = options
11
- @root = options[:root] ? File.expand_path(options[:root]) : Dir.pwd
12
- end
10
+ def initialize(options)
11
+ @options = options
12
+ @root = options[:root] ? File.expand_path(options[:root]) : Dir.pwd
13
+ end
13
14
 
14
- def start
15
- kill_unmanaged_pid! if options[:force_run]
16
- run_rails_command!
17
- wait_for_pid
18
- end
15
+ def start
16
+ kill_unmanaged_pid! if options[:force_run]
17
+ run_rails_command!
18
+ wait_for_pid
19
+ end
19
20
 
20
- def stop
21
- if has_pid?
22
- pid = File.read(pid_file).strip.to_i
23
- sig_sent = kill_process("INT", pid)
24
- wait_for_no_pid if sig_sent
21
+ def stop
22
+ return unless has_pid?
25
23
 
26
- # If you lost your pid_file, you are already died.
27
- kill_process("KILL", pid)
24
+ if (pid = read_pid)
25
+ sig_sent = kill_process("INT", pid)
26
+ wait_for_no_pid if sig_sent
27
+
28
+ # If you lost your pid_file, you are already died.
29
+ kill_process("KILL", pid)
30
+ end
28
31
  remove_pid_file_and_wait_for_no_pid
29
32
  end
30
- end
31
33
 
32
- def restart
33
- stop
34
- start
35
- end
36
-
37
- def build_command
38
- command = build_cli_command if options[:CLI]
39
- command ||= build_zeus_command if options[:zeus]
40
- command ||= build_rails_command
41
- "sh -c 'cd \"#{@root}\" && #{command} &'"
42
- end
34
+ def restart
35
+ stop
36
+ start
37
+ end
43
38
 
44
- def environment
45
- rails_env = if options[:zeus]
46
- nil
47
- else
48
- options[:environment]
49
- end
39
+ def build_command
40
+ command = build_cli_command if options[:CLI]
41
+ command ||= build_zeus_command if options[:zeus]
42
+ command ||= build_rails_command
43
+ "sh -c 'cd \"#{@root}\" && #{command} &'"
44
+ end
50
45
 
51
- { "RAILS_ENV" => rails_env }
52
- end
46
+ def environment
47
+ rails_env = if options[:zeus]
48
+ nil
49
+ else
50
+ options[:environment]
51
+ end
53
52
 
54
- def pid_file
55
- File.expand_path(options[:pid_file] || File.join(@root, "tmp/pids/#{options[:environment]}.pid"))
56
- end
53
+ { "RAILS_ENV" => rails_env }
54
+ end
57
55
 
58
- def pid
59
- has_pid? ? File.read(pid_file).to_i : nil
60
- end
56
+ def pid_file
57
+ @pid_file ||= File.expand_path(options[:pid_file] || File.join(@root, "tmp/pids/#{options[:environment]}.pid"))
58
+ end
61
59
 
62
- def sleep_time
63
- options[:timeout].to_f / MAX_WAIT_COUNT.to_f
64
- end
60
+ def pid
61
+ has_pid? ? read_pid : nil
62
+ end
65
63
 
66
- private
64
+ def sleep_time
65
+ options[:timeout].to_f / MAX_WAIT_COUNT.to_f
66
+ end
67
67
 
68
- # command builders
69
- def build_options
70
- rails_options = [
71
- options[:daemon] ? '-d' : nil,
72
- options[:debugger] ? '-u' : nil,
73
- '-e', options[:environment],
74
- '--pid', "\"#{pid_file}\"",
75
- '-p', options[:port],
76
- options[:server],
77
- ]
68
+ private
78
69
 
79
- rails_options.join(' ')
80
- end
70
+ # command builders
71
+ def build_options
72
+ rails_options = [
73
+ options[:daemon] ? '-d' : nil,
74
+ options[:debugger] ? '-u' : nil,
75
+ '-e', options[:environment],
76
+ '--pid', "\"#{pid_file}\"",
77
+ '-p', options[:port],
78
+ options[:server],
79
+ ]
81
80
 
82
- def build_cli_command
83
- "#{options[:CLI]} --pid \"#{pid_file}\""
84
- end
81
+ rails_options.join(' ')
82
+ end
85
83
 
86
- def build_zeus_command
87
- zeus_options = [
88
- options[:zeus_plan] || 'server',
89
- ]
90
- "zeus #{zeus_options.join(' ')} #{build_options}"
91
- end
84
+ def build_cli_command
85
+ "#{options[:CLI]} --pid \"#{pid_file}\""
86
+ end
92
87
 
93
- def build_rails_command
94
- "rails server #{build_options}"
95
- end
88
+ def build_zeus_command
89
+ zeus_options = [
90
+ options[:zeus_plan] || 'server',
91
+ ]
92
+ "zeus #{zeus_options.join(' ')} #{build_options}"
93
+ end
96
94
 
97
- def without_bundler_env
98
- if defined?(::Bundler)
99
- ::Bundler.with_clean_env { yield }
100
- else
101
- yield
95
+ def build_rails_command
96
+ "rails server #{build_options}"
102
97
  end
103
- end
104
98
 
105
- def run_rails_command!
106
- if options[:CLI] || options[:zeus]
107
- without_bundler_env { system(environment, build_command) }
108
- else
109
- system(environment, build_command)
99
+ def without_bundler_env
100
+ if defined?(::Bundler)
101
+ ::Bundler.with_clean_env { yield }
102
+ else
103
+ yield
104
+ end
110
105
  end
111
- end
112
106
 
113
- def has_pid?
114
- File.file?(pid_file)
115
- end
107
+ def run_rails_command!
108
+ if options[:CLI] || options[:zeus]
109
+ without_bundler_env { system(environment, build_command) }
110
+ else
111
+ system(environment, build_command)
112
+ end
113
+ end
116
114
 
117
- def wait_for_pid_action
118
- sleep sleep_time
119
- end
115
+ def has_pid?
116
+ File.file?(pid_file)
117
+ end
120
118
 
121
- def kill_unmanaged_pid!
122
- if pid = unmanaged_pid
123
- kill_process("KILL", pid)
124
- remove_pid_file_and_wait_for_no_pid
119
+ def wait_for_pid_action
120
+ sleep sleep_time
125
121
  end
126
- end
127
122
 
128
- def unmanaged_pid
129
- file_list = `lsof -n -i TCP:#{options[:port]}`
130
- file_list.each_line { |line|
131
- if line["*:#{options[:port]} "]
132
- return line.split("\s")[1]
123
+ def kill_unmanaged_pid!
124
+ if pid = unmanaged_pid
125
+ kill_process("KILL", pid)
126
+ remove_pid_file_and_wait_for_no_pid
133
127
  end
134
- }
135
- nil
136
- end
128
+ end
129
+
130
+ def unmanaged_pid
131
+ file_list = `lsof -n -i TCP:#{options[:port]}`
132
+ file_list.each_line { |line|
133
+ if line["*:#{options[:port]} "]
134
+ return line.split("\s")[1].to_i
135
+ end
136
+ }
137
+ nil
138
+ end
137
139
 
138
- private
140
+ private
139
141
 
140
- def wait_for_pid
141
- wait_for_pid_loop { has_pid? }
142
- end
142
+ def wait_for_pid
143
+ wait_for_pid_loop { has_pid? }
144
+ end
143
145
 
144
- def wait_for_no_pid
145
- wait_for_pid_loop { !has_pid? }
146
- end
146
+ def wait_for_no_pid
147
+ wait_for_pid_loop { !has_pid? }
148
+ end
147
149
 
148
- def remove_pid_file_and_wait_for_no_pid
149
- wait_for_pid_loop do
150
- FileUtils.rm pid_file, :force => true
151
- !has_pid?
150
+ def remove_pid_file_and_wait_for_no_pid
151
+ wait_for_pid_loop do
152
+ FileUtils.rm pid_file, :force => true
153
+ !has_pid?
154
+ end
152
155
  end
153
- end
154
156
 
155
- def wait_for_pid_loop
156
- count = 0
157
- while !yield && count < MAX_WAIT_COUNT
158
- wait_for_pid_action
159
- count += 1
157
+ def wait_for_pid_loop
158
+ count = 0
159
+ while !yield && count < MAX_WAIT_COUNT
160
+ wait_for_pid_action
161
+ count += 1
162
+ end
163
+ !(count == MAX_WAIT_COUNT)
164
+ end
165
+
166
+ def kill_process(signal, pid)
167
+ begin
168
+ Process.kill(signal, pid)
169
+ true
170
+ rescue Errno::EPERM
171
+ UI.info "[Guard::Rails::Error] Don't have permission to KILL!"
172
+ false
173
+ rescue Errno::EINVAL, ArgumentError, Errno::ESRCH, RangeError
174
+ false
175
+ end
160
176
  end
161
- !(count == MAX_WAIT_COUNT)
162
- end
163
177
 
164
- def kill_process(signal, pid)
165
- begin
166
- Process.kill(signal, pid)
167
- true
168
- rescue Errno::EINVAL, Errno::ESRCH, RangeError
169
- false
178
+ def read_pid
179
+ Integer(File.read(pid_file))
180
+ rescue ArgumentError
181
+ nil
170
182
  end
183
+
171
184
  end
172
185
  end
173
186
  end
@@ -1,9 +1,8 @@
1
1
  require 'spec_helper'
2
- require 'guard/rails/runner'
3
2
  require 'fakefs/spec_helpers'
4
3
 
5
- describe Guard::RailsRunner do
6
- let(:runner) { Guard::RailsRunner.new(options) }
4
+ describe Guard::Rails::Runner do
5
+ let(:runner) { Guard::Rails::Runner.new(options) }
7
6
  let(:environment) { 'development' }
8
7
  let(:port) { 3000 }
9
8
 
@@ -207,7 +206,7 @@ describe Guard::RailsRunner do
207
206
  end
208
207
  end
209
208
 
210
- context 'when guard-rails is outside of bundler' do
209
+ context 'when guard-rails is inside of bundler' do
211
210
  before do
212
211
  ENV['BUNDLE_GEMFILE'] = 'Gemfile'
213
212
  end
@@ -231,6 +230,12 @@ describe Guard::RailsRunner do
231
230
  context 'when guard-rails is outside of bundler' do
232
231
  before do
233
232
  ENV['BUNDLE_GEMFILE'] = nil
233
+ BundlerClass = Bundler
234
+ Object.send(:remove_const, :Bundler)
235
+ end
236
+ after do
237
+ Bundler = BundlerClass
238
+ Object.send(:remove_const, :BundlerClass)
234
239
  end
235
240
 
236
241
  context 'with default env' do
@@ -288,7 +293,7 @@ describe Guard::RailsRunner do
288
293
  before do
289
294
  pid_stub.returns(false)
290
295
  kill_expectation.never
291
- mock(runner).wait_for_pid_action.times(Guard::RailsRunner::MAX_WAIT_COUNT)
296
+ mock(runner).wait_for_pid_action.times(Guard::Rails::Runner::MAX_WAIT_COUNT)
292
297
  end
293
298
 
294
299
  it "doesn't start" do
@@ -297,12 +302,132 @@ describe Guard::RailsRunner do
297
302
  end
298
303
  end
299
304
 
305
+ describe '#stop' do
306
+ include FakeFS::SpecHelpers
307
+
308
+ it 'stops' do
309
+ expect(runner.stop)
310
+ end
311
+
312
+ context 'when pid exists' do
313
+ let(:pid) { 12345 }
314
+
315
+ before do
316
+ FileUtils.mkdir_p File.split(runner.pid_file).first
317
+ File.open(runner.pid_file, 'w') { |f| f.print pid }
318
+ end
319
+
320
+ it 'removes the pid file' do
321
+ runner.stop
322
+ expect(File.exists?(runner.pid_file)).to be false
323
+ end
324
+
325
+ it 'kills the process with INT' do
326
+ mock(runner).kill_process.with("INT", pid).returns { true }
327
+ mock(runner).kill_process.with("KILL", pid).once
328
+ runner.stop
329
+ end
330
+
331
+ it 'kills the process with KILL when INT not work' do
332
+ mock(runner).kill_process.with("INT", pid).returns { false }
333
+ mock(runner).kill_process.with("KILL", pid).once
334
+ runner.stop
335
+ end
336
+ end
337
+
338
+ context "when pid file doesn't exist" do
339
+ it 'does nothing' do
340
+ runner.stop
341
+ mock(runner).kill_process.never
342
+ end
343
+ end
344
+
345
+ context "when pid file is empty" do
346
+ before do
347
+ FileUtils.mkdir_p File.split(runner.pid_file).first
348
+ File.open(runner.pid_file, 'w') { |f| f.print "" }
349
+ end
350
+
351
+ it 'does nothing' do
352
+ mock(runner).kill_process.never
353
+ runner.stop
354
+ end
355
+
356
+ it 'removes the pid file' do
357
+ runner.stop
358
+ expect(File.exists?(runner.pid_file)).to be false
359
+ end
360
+
361
+ end
362
+ end
363
+
364
+ describe '#restart' do
365
+ it 'calls stop and start' do
366
+ mock(runner).stop.once
367
+ mock(runner).start.once
368
+ runner.restart
369
+ end
370
+ end
371
+
372
+ describe '#kill_unmanaged_pid!' do
373
+ let(:pid) { 12345 }
374
+
375
+ it 'kill processes if any' do
376
+ mock(runner).unmanaged_pid.returns { pid }
377
+ mock(runner).kill_process.with("KILL", pid).once
378
+ runner.send(:kill_unmanaged_pid!)
379
+ end
380
+
381
+ it 'does nothing if none' do
382
+ mock(runner).unmanaged_pid.returns { nil }
383
+ mock(runner).kill_process.with("KILL", pid).never
384
+ runner.send(:kill_unmanaged_pid!)
385
+ end
386
+ end
387
+
388
+ describe '#unmanaged_pid' do
389
+ let(:pid) { 12345 }
390
+
391
+ it 'returns pid if any' do
392
+ mock(runner, :'`').with(anything).returns {
393
+ "ruby #{pid} ranmocy 12u IPv4 0x9c30720e04d31a0f 0t0 TCP *:#{port} (LISTEN)"
394
+ }
395
+ expect(runner.send(:unmanaged_pid)).to eq pid
396
+ end
397
+
398
+ it 'returns nil if none' do
399
+ mock(runner, :'`').with(anything).returns { "\n" }
400
+ expect(runner.send(:unmanaged_pid)).to be nil
401
+ end
402
+ end
403
+
404
+ describe '#kill_process' do
405
+ let(:signal) { 'INT' }
406
+ let(:fake_signal) { 'INT0' }
407
+ let(:pid) { 12345 }
408
+
409
+ it 'returns true if killed' do
410
+ mock(Process).kill(signal, pid) { 0 }
411
+ expect(runner.send(:kill_process, signal, pid)).to be true
412
+ end
413
+
414
+ it 'returns false if signal is wrong' do
415
+ expect(runner.send(:kill_process, fake_signal, pid)).to be false
416
+ end
417
+
418
+ it 'returns false if no permission to kill' do
419
+ mock(Process).kill(signal, pid) { raise Errno::EPERM }
420
+ mock(Guard::UI).info("[Guard::Rails::Error] Don't have permission to KILL!")
421
+ expect(runner.send(:kill_process, signal, pid)).to be false
422
+ end
423
+ end
424
+
300
425
  describe '#sleep_time' do
301
426
  let(:timeout) { 30 }
302
427
  let(:options) { default_options.merge(:timeout => timeout) }
303
428
 
304
429
  it "adjusts the sleep time as necessary" do
305
- expect(runner.sleep_time).to eq (timeout.to_f / Guard::RailsRunner::MAX_WAIT_COUNT.to_f)
430
+ expect(runner.sleep_time).to eq (timeout.to_f / Guard::Rails::Runner::MAX_WAIT_COUNT.to_f)
306
431
  end
307
432
  end
308
433
  end
@@ -1,5 +1,4 @@
1
1
  require 'spec_helper'
2
- require 'guard/rails'
3
2
 
4
3
  describe Guard::Rails do
5
4
  let(:guard) { Guard::Rails.new(options) }
@@ -39,14 +38,14 @@ describe Guard::Rails do
39
38
  let(:pid) { '12345' }
40
39
 
41
40
  before do
42
- any_instance_of(Guard::RailsRunner, pid: pid)
41
+ any_instance_of(Guard::Rails::Runner, pid: pid)
43
42
  end
44
43
 
45
44
  context 'at start' do
46
45
  before do
47
46
  mock(Guard::UI).info.with('Starting Rails...')
48
47
  mock(Guard::Notifier).notify.with(/Rails starting/, hash_including(:image => :pending))
49
- any_instance_of(Guard::RailsRunner, restart: true)
48
+ any_instance_of(Guard::Rails::Runner, restart: true)
50
49
  end
51
50
 
52
51
  it "starts and shows the pid file" do
@@ -59,14 +58,14 @@ describe Guard::Rails do
59
58
 
60
59
  context "after start" do
61
60
  before do
62
- any_instance_of(Guard::RailsRunner, pid: pid)
61
+ any_instance_of(Guard::Rails::Runner, pid: pid)
63
62
  mock(Guard::UI).info.with('Restarting Rails...')
64
63
  mock(Guard::Notifier).notify.with(/Rails restarting/, hash_including(:image => :pending))
65
64
  end
66
65
 
67
66
  context "with pid file" do
68
67
  before do
69
- any_instance_of(Guard::RailsRunner, restart: true)
68
+ any_instance_of(Guard::Rails::Runner, restart: true)
70
69
  end
71
70
 
72
71
  it "restarts and shows the pid file" do
@@ -79,7 +78,7 @@ describe Guard::Rails do
79
78
 
80
79
  context "without pid file" do
81
80
  before do
82
- any_instance_of(Guard::RailsRunner, restart: false)
81
+ any_instance_of(Guard::Rails::Runner, restart: false)
83
82
  end
84
83
 
85
84
  it "restarts and shows the pid file" do
data/spec/spec_helper.rb CHANGED
@@ -1,5 +1,12 @@
1
- require "codeclimate-test-reporter"
2
- CodeClimate::TestReporter.start
1
+ if ENV['CI']
2
+ require "codeclimate-test-reporter"
3
+ CodeClimate::TestReporter.start
4
+ else
5
+ require 'simplecov'
6
+ SimpleCov.start
7
+ end
8
+
9
+ require 'guard/rails'
3
10
 
4
11
  RSpec.configure do |c|
5
12
  c.mock_with :rr
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: guard-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.0
4
+ version: 0.6.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - John Bintz
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-09-14 00:00:00.000000000 Z
12
+ date: 2014-11-02 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: guard