guard 0.3.0 → 0.3.1
Sign up to get free protection for your applications and to get access to all the features.
- data/README.rdoc +64 -77
- data/lib/guard.rb +7 -8
- data/lib/guard/cli.rb +10 -9
- data/lib/guard/listeners/linux.rb +1 -0
- data/lib/guard/notifier.rb +11 -7
- data/lib/guard/ui.rb +10 -10
- data/lib/guard/version.rb +1 -1
- metadata +11 -27
data/README.rdoc
CHANGED
@@ -4,40 +4,39 @@ Guard is a command line tool that easily handle events on files modifications.
|
|
4
4
|
|
5
5
|
== Features
|
6
6
|
|
7
|
-
- {FSEvent}[http://en.wikipedia.org/wiki/FSEvents] support on Mac OS X 10.5+ (without RubyCocoa!, {rb-fsevent gem, >= 0.3.5}[https://rubygems.org/gems/rb-fsevent] required)
|
8
|
-
- {Inotify}[http://en.wikipedia.org/wiki/Inotify] support on Linux ({rb-inotify gem, >= 0.5.1}[https://rubygems.org/gems/rb-inotify] required)
|
9
|
-
- Polling
|
10
|
-
- Super fast
|
11
|
-
-
|
12
|
-
-
|
13
|
-
-
|
14
|
-
- Tested on Ruby 1.8.6, 1.8.7 & 1.9.2
|
7
|
+
- {FSEvent}[http://en.wikipedia.org/wiki/FSEvents] support on Mac OS X 10.5+ (without RubyCocoa!, {rb-fsevent gem, >= 0.3.5}[https://rubygems.org/gems/rb-fsevent] required).
|
8
|
+
- {Inotify}[http://en.wikipedia.org/wiki/Inotify] support on Linux ({rb-inotify gem, >= 0.5.1}[https://rubygems.org/gems/rb-inotify] required).
|
9
|
+
- Polling on the other operating systems (help us to support more OS).
|
10
|
+
- Automatic & Super fast (when polling is not used) files modifications detection (even new files are detected).
|
11
|
+
- Growl notifications ({growlnotify}[http://growl.info/documentation/growlnotify.php] & {growl gem}[https://rubygems.org/gems/growl] required).
|
12
|
+
- Libnotify notifications ({libnotify gem}[https://rubygems.org/gems/libnotify] required).
|
13
|
+
- Tested on Ruby 1.8.6, 1.8.7 & 1.9.2.
|
15
14
|
|
16
15
|
== Install
|
17
16
|
|
18
17
|
Install the gem:
|
19
18
|
|
20
|
-
gem install guard
|
19
|
+
$ gem install guard
|
21
20
|
|
22
|
-
Add it to your Gemfile (inside test group):
|
21
|
+
Add it to your Gemfile (inside the <tt>test</tt> group):
|
23
22
|
|
24
23
|
gem 'guard'
|
25
24
|
|
26
25
|
Generate an empty Guardfile with:
|
27
26
|
|
28
|
-
guard init
|
27
|
+
$ guard init
|
29
28
|
|
30
|
-
Add the guards you need (see
|
29
|
+
Add the guards you need to your Guardfile (see the existing guards below).
|
31
30
|
|
32
31
|
=== On Mac OS X
|
33
32
|
|
34
|
-
Install rb-fsevent for {FSEvent}[http://en.wikipedia.org/wiki/FSEvents] support:
|
33
|
+
Install the rb-fsevent gem for {FSEvent}[http://en.wikipedia.org/wiki/FSEvents] support:
|
35
34
|
|
36
|
-
gem install rb-fsevent
|
35
|
+
$ gem install rb-fsevent
|
37
36
|
|
38
|
-
Install
|
37
|
+
Install the Growl gem if you want notification support:
|
39
38
|
|
40
|
-
gem install growl
|
39
|
+
$ gem install growl
|
41
40
|
|
42
41
|
And add it to you Gemfile:
|
43
42
|
|
@@ -45,13 +44,13 @@ And add it to you Gemfile:
|
|
45
44
|
|
46
45
|
=== On Linux
|
47
46
|
|
48
|
-
Install rb-inotify for {inotify}[http://en.wikipedia.org/wiki/Inotify] support:
|
47
|
+
Install the rb-inotify gem for {inotify}[http://en.wikipedia.org/wiki/Inotify] support:
|
49
48
|
|
50
|
-
gem install rb-inotify
|
49
|
+
$ gem install rb-inotify
|
51
50
|
|
52
|
-
Install
|
51
|
+
Install the Libnotify gem if you want notification support:
|
53
52
|
|
54
|
-
gem install libnotify
|
53
|
+
$ gem install libnotify
|
55
54
|
|
56
55
|
And add it to you Gemfile:
|
57
56
|
|
@@ -61,79 +60,67 @@ And add it to you Gemfile:
|
|
61
60
|
|
62
61
|
Just launch Guard inside your Ruby / Rails project with:
|
63
62
|
|
64
|
-
guard
|
63
|
+
$ guard [start]
|
65
64
|
|
66
65
|
or if you use Bundler, to run the Guard executable specific to your bundle:
|
67
66
|
|
68
|
-
bundle exec guard
|
67
|
+
$ bundle exec guard
|
69
68
|
|
70
69
|
== Command line options
|
71
70
|
|
72
71
|
Shell can be cleared after each change with:
|
73
72
|
|
74
|
-
guard --clear
|
75
|
-
guard -c # shortcut
|
73
|
+
$ guard --clear
|
74
|
+
$ guard -c # shortcut
|
76
75
|
|
77
|
-
|
76
|
+
Notifications (growl/libnotify) can be disabled with:
|
78
77
|
|
79
|
-
guard --
|
80
|
-
guard -
|
78
|
+
$ guard --notify false
|
79
|
+
$ guard -n false # shortcut
|
80
|
+
|
81
|
+
The guards to start can be specified by group (see the Guardfile DSL below) specifying the <tt>--group</tt> (or <tt>-g</tt>) option:
|
82
|
+
|
83
|
+
$ guard --group group_name another_group_name
|
84
|
+
$ guard -g group_name another_group_name # shortcut
|
81
85
|
|
82
86
|
Options list is available with:
|
83
87
|
|
84
|
-
guard help [TASK]
|
88
|
+
$ guard help [TASK]
|
85
89
|
|
86
90
|
== Signal handlers
|
87
91
|
|
88
92
|
Signal handlers are used to interact with Guard:
|
89
93
|
|
90
|
-
- Ctrl-C -
|
91
|
-
- Ctrl
|
92
|
-
- Ctrl-Z -
|
94
|
+
- <tt>Ctrl-C</tt> - Calls each guard's <tt>stop</tt> method, in the same order they are declared in the Guardfile, and then quits Guard itself.
|
95
|
+
- <tt>Ctrl-\\</tt> - Calls each guard's <tt>run_all</tt> method, in the same order they are declared in the Guardfile.
|
96
|
+
- <tt>Ctrl-Z</tt> - Calls each guard's <tt>reload</tt> method, in the same order they are declared in the Guardfile.
|
93
97
|
|
94
98
|
== Available Guards
|
95
99
|
|
96
|
-
|
97
|
-
- {guard-coffeescript}[https://github.com/guard/guard-coffeescript] by {Michael Kessler}[https://github.com/netzpirat]
|
98
|
-
- {guard-compass}[https://github.com/guard/guard-compass] by {Olivier Amblet}[https://github.com/oliamb]
|
99
|
-
- {guard-cucumber}[https://github.com/guard/guard-cucumber] by {Michael Kessler}[https://github.com/netzpirat]
|
100
|
-
- {guard-ego}[https://github.com/guard/guard-ego] by {Fabio Kuhn}[https://github.com/mordaroso]
|
101
|
-
- {guard-jammit}[https://github.com/guard/guard-jammit] by {Pelle Braendgaard}[https://github.com/pelle]
|
102
|
-
- {guard-less}[https://github.com/guard/guard-less] by {Brendan Erwin}[https://github.com/brendanjerwin]
|
103
|
-
- {guard-livereload}[https://github.com/guard/guard-livereload] by {Thibaud Guillaume-Gentil}[https://github.com/thibaudgg]
|
104
|
-
- {guard-minitest}[https://github.com/guard/guard-minitest] by {Yann Lugrin}[https://github.com/yannlugrin]
|
105
|
-
- {guard-nanoc}[https://github.com/guard/guard-nanoc] by {Yann Lugrin}[https://github.com/yannlugrin]
|
106
|
-
- {guard-passenger}[https://github.com/guard/guard-passenger] by {Fabio Kuhn}[https://github.com/mordaroso]
|
107
|
-
- {guard-rspec}[https://github.com/guard/guard-rspec] by {Thibaud Guillaume-Gentil}[https://github.com/thibaudgg]
|
108
|
-
- {guard-sass}[https://github.com/guard/guard-sass] by {Joshua Hawxwell}[https://github.com/hawx]
|
109
|
-
- {guard-shell}[https://github.com/guard/guard-shell] by {Joshua Hawxwell}[https://github.com/hawx]
|
110
|
-
- {guard-soca}[https://github.com/guard/guard-soca] by {Luke Amdor}[https://github.com/rubbish]
|
111
|
-
- {guard-spork}[https://github.com/guard/guard-spork] by {Thibaud Guillaume-Gentil}[https://github.com/thibaudgg]
|
112
|
-
- {guard-stendhal}[https://github.com/guard/guard-stendhal] by {Josep Mª Bach}[https://github.com/txus]
|
113
|
-
- {guard-test}[https://github.com/guard/guard-test] by {Rémy Coutable}[https://github.com/rymai]
|
100
|
+
{Available Guards list}[https://github.com/guard/guard/wiki/List-of-available-Guards] (on the wiki now)
|
114
101
|
|
115
102
|
=== Add a guard to your Guardfile
|
116
103
|
|
117
|
-
Add it to your Gemfile (inside test group):
|
104
|
+
Add it to your Gemfile (inside the <tt>test</tt> group):
|
118
105
|
|
119
106
|
gem '<guard-name>'
|
120
107
|
|
121
|
-
|
108
|
+
Insert default guard's definition to your Guardfile by running this command:
|
122
109
|
|
123
|
-
guard init <guard-name>
|
110
|
+
$ guard init <guard-name>
|
124
111
|
|
125
112
|
You are good to go!
|
126
113
|
|
127
114
|
== Guardfile DSL
|
128
115
|
|
129
|
-
The Guardfile DSL consists of just three simple
|
116
|
+
The Guardfile DSL consists of just three simple methods: <tt>guard</tt>, <tt>watch</tt> & <tt>group</tt>.
|
130
117
|
|
131
118
|
Required:
|
132
|
-
- The
|
133
|
-
- The
|
119
|
+
- The <tt>guard</tt> method allows you to add a guard with an optional hash of options.
|
120
|
+
- The <tt>watch</tt> method allows you to define which files are supervised by this guard. An optional block can be added to overwrite the paths sent to the <tt>run_on_change</tt> guard method or to launch any arbitrary command.
|
134
121
|
|
135
122
|
Optional:
|
136
|
-
- The
|
123
|
+
- The <tt>group</tt> method allows you to group several guards together. Groups to be run can be specified with the Guard DSL option <tt>--group</tt> (or <tt>-g</tt>). This comes in handy especially when you have a huge Guardfile and want to focus your development on a certain part.
|
137
124
|
|
138
125
|
Example:
|
139
126
|
|
@@ -142,9 +129,9 @@ Example:
|
|
142
129
|
watch('Gemfile')
|
143
130
|
end
|
144
131
|
|
145
|
-
guard 'rspec' do
|
132
|
+
guard 'rspec', :cli => '--color --format doc' do
|
146
133
|
# Regexp watch patterns are matched with Regexp#match
|
147
|
-
watch(%r{^spec
|
134
|
+
watch(%r{^spec/.+_spec\.rb})
|
148
135
|
watch(%r{^lib/(.+)\.rb}) { |m| "spec/lib/#{m[1]}_spec.rb" }
|
149
136
|
watch(%r{^spec/models/.+\.rb}) { ["spec/models", "spec/acceptance"] }
|
150
137
|
watch(%r{^spec/.+\.rb}) { `say hello` }
|
@@ -156,17 +143,17 @@ Example:
|
|
156
143
|
|
157
144
|
group 'frontend' do
|
158
145
|
guard 'coffeescript', :output => 'public/javascripts/compiled' do
|
159
|
-
watch(%r{app/coffeescripts/.+\.coffee})
|
146
|
+
watch(%r{^app/coffeescripts/.+\.coffee})
|
160
147
|
end
|
161
148
|
|
162
149
|
guard 'livereload' do
|
163
|
-
watch(%r{app/.+\.(erb|haml)})
|
150
|
+
watch(%r{^app/.+\.(erb|haml)})
|
164
151
|
end
|
165
152
|
end
|
166
153
|
|
167
|
-
== Create a guard
|
154
|
+
== Create a new guard
|
168
155
|
|
169
|
-
|
156
|
+
Creating a new guard is very easy, just create a new gem (<tt>bundle gem</tt> if you use Bundler) with this basic structure:
|
170
157
|
|
171
158
|
lib/
|
172
159
|
guard/
|
@@ -175,7 +162,7 @@ Create a new guard is very easy, just create a new gem with this basic structure
|
|
175
162
|
Guardfile (needed for guard init <guard-name>)
|
176
163
|
guard-name.rb
|
177
164
|
|
178
|
-
lib/guard/guard-name.rb inherit from
|
165
|
+
<tt>Guard::GuardName</tt> (in <tt>lib/guard/guard-name.rb</tt>) must inherit from <tt>Guard::Guard</tt> and should overwrite at least one of the five basic <tt>Guard::Guard</tt> instance methods. Example:
|
179
166
|
|
180
167
|
require 'guard'
|
181
168
|
require 'guard/guard'
|
@@ -183,42 +170,42 @@ lib/guard/guard-name.rb inherit from guard/guard and should overwrite at least o
|
|
183
170
|
module Guard
|
184
171
|
class GuardName < Guard
|
185
172
|
|
186
|
-
def initialize(watchers
|
173
|
+
def initialize(watchers=[], options={})
|
187
174
|
super
|
188
175
|
# init stuff here, thx!
|
189
176
|
end
|
190
177
|
|
191
|
-
#
|
192
|
-
# = Guard
|
193
|
-
#
|
178
|
+
# =================
|
179
|
+
# = Guard methods =
|
180
|
+
# =================
|
194
181
|
|
195
|
-
# If one of those methods raise an exception, the Guard instance
|
196
|
-
# will be removed from the active
|
182
|
+
# If one of those methods raise an exception, the Guard::GuardName instance
|
183
|
+
# will be removed from the active guards.
|
197
184
|
|
198
|
-
#
|
185
|
+
# Called once when Guard starts
|
199
186
|
# Please override initialize method to init stuff
|
200
187
|
def start
|
201
188
|
true
|
202
189
|
end
|
203
190
|
|
204
|
-
#
|
191
|
+
# Called on Ctrl-C signal (when Guard quits)
|
205
192
|
def stop
|
206
193
|
true
|
207
194
|
end
|
208
195
|
|
209
|
-
#
|
196
|
+
# Called on Ctrl-Z signal
|
210
197
|
# This method should be mainly used for "reload" (really!) actions like reloading passenger/spork/bundler/...
|
211
198
|
def reload
|
212
199
|
true
|
213
200
|
end
|
214
201
|
|
215
|
-
#
|
202
|
+
# Called on Ctrl-/ signal
|
216
203
|
# This method should be principally used for long action like running all specs/tests/...
|
217
204
|
def run_all
|
218
205
|
true
|
219
206
|
end
|
220
207
|
|
221
|
-
#
|
208
|
+
# Called on file(s) modifications
|
222
209
|
def run_on_change(paths)
|
223
210
|
true
|
224
211
|
end
|
@@ -226,12 +213,12 @@ lib/guard/guard-name.rb inherit from guard/guard and should overwrite at least o
|
|
226
213
|
end
|
227
214
|
end
|
228
215
|
|
229
|
-
|
216
|
+
Please take a look at the existing guards' source code (see the list above) for more concrete example.
|
230
217
|
|
231
218
|
== Development
|
232
219
|
|
233
|
-
- Source hosted at {GitHub}[https://github.com/guard/guard]
|
234
|
-
- Report
|
220
|
+
- Source hosted at {GitHub}[https://github.com/guard/guard].
|
221
|
+
- Report Issues/Questions/Feature requests on {GitHub Issues}[https://github.com/guard/guard/issues].
|
235
222
|
|
236
223
|
Pull requests are very welcome! Make sure your patches are well tested. Please create a topic branch for every separate change
|
237
224
|
you make.
|
data/lib/guard.rb
CHANGED
@@ -17,6 +17,9 @@ module Guard
|
|
17
17
|
@options = options
|
18
18
|
@listener = Listener.select_and_init
|
19
19
|
@guards = []
|
20
|
+
|
21
|
+
Notifier.turn_off unless options[:notify]
|
22
|
+
|
20
23
|
self
|
21
24
|
end
|
22
25
|
|
@@ -50,7 +53,7 @@ module Guard
|
|
50
53
|
new_modified_files = listener.modified_files([Dir.pwd + '/'], :all => true)
|
51
54
|
listener.update_last_event
|
52
55
|
unless new_modified_files.empty?
|
53
|
-
run_on_change_for_all_guards(new_modified_files)
|
56
|
+
run { run_on_change_for_all_guards(new_modified_files) }
|
54
57
|
end
|
55
58
|
end
|
56
59
|
|
@@ -82,20 +85,16 @@ module Guard
|
|
82
85
|
|
83
86
|
def get_guard_class(name)
|
84
87
|
require "guard/#{name.downcase}"
|
85
|
-
|
86
|
-
ObjectSpace.each_object(Class) do |klass|
|
87
|
-
klasses << klass if klass.to_s.downcase.match(/^guard::#{name.downcase}/)
|
88
|
-
end
|
89
|
-
klasses.first
|
88
|
+
self.const_get(self.constants.find{|klass_name| klass_name.to_s.downcase == name.downcase })
|
90
89
|
rescue LoadError
|
91
90
|
UI.error "Could not find gem 'guard-#{name}', please add it in your Gemfile."
|
92
91
|
end
|
93
92
|
|
94
93
|
def locate_guard(name)
|
95
|
-
`gem
|
94
|
+
`gem which guard/#{name}`.chomp
|
96
95
|
rescue
|
97
96
|
UI.error "Could not find 'guard-#{name}' gem path."
|
98
97
|
end
|
99
98
|
|
100
99
|
end
|
101
|
-
end
|
100
|
+
end
|
data/lib/guard/cli.rb
CHANGED
@@ -4,22 +4,23 @@ require 'guard/version'
|
|
4
4
|
module Guard
|
5
5
|
class CLI < Thor
|
6
6
|
default_task :start
|
7
|
-
|
8
|
-
method_option :clear,
|
9
|
-
method_option :
|
10
|
-
method_option :
|
11
|
-
|
7
|
+
|
8
|
+
method_option :clear, :type => :boolean, :default => false, :aliases => '-c', :banner => "Auto clear shell before each change/run_all/reload"
|
9
|
+
method_option :notify, :type => :boolean, :default => true, :aliases => '-n', :banner => "Notifications feature (growl/libnotify)"
|
10
|
+
method_option :debug, :type => :boolean, :default => false, :aliases => '-d', :banner => "Print debug messages"
|
11
|
+
method_option :group, :type => :array, :default => [], :aliases => '-g', :banner => "Run only the passed groups"
|
12
|
+
|
12
13
|
desc "start", "Starts Guard"
|
13
14
|
def start
|
14
15
|
::Guard.start(options)
|
15
16
|
end
|
16
|
-
|
17
|
+
|
17
18
|
desc "version", "Prints Guard's version information"
|
18
19
|
def version
|
19
20
|
::Guard::UI.info "Guard version #{Guard::VERSION}"
|
20
21
|
end
|
21
22
|
map %w(-v --version) => :version
|
22
|
-
|
23
|
+
|
23
24
|
desc "init [GUARD]", "Generates a Guardfile into the current working directory, or insert the given GUARD"
|
24
25
|
def init(guard_name = nil)
|
25
26
|
if !File.exist?("Guardfile")
|
@@ -29,12 +30,12 @@ module Guard
|
|
29
30
|
::Guard::UI.error "Guardfile already exists at #{Dir.pwd}/Guardfile"
|
30
31
|
exit 1
|
31
32
|
end
|
32
|
-
|
33
|
+
|
33
34
|
if guard_name
|
34
35
|
guard_class = ::Guard.get_guard_class(guard_name)
|
35
36
|
guard_class.init(guard_name)
|
36
37
|
end
|
37
38
|
end
|
38
|
-
|
39
|
+
|
39
40
|
end
|
40
41
|
end
|
data/lib/guard/notifier.rb
CHANGED
@@ -3,9 +3,13 @@ require 'pathname'
|
|
3
3
|
|
4
4
|
module Guard
|
5
5
|
module Notifier
|
6
|
-
|
6
|
+
|
7
|
+
def self.turn_off
|
8
|
+
@disable = true
|
9
|
+
end
|
10
|
+
|
7
11
|
def self.notify(message, options = {})
|
8
|
-
unless ENV["GUARD_ENV"] == "test"
|
12
|
+
unless @disable || ENV["GUARD_ENV"] == "test"
|
9
13
|
image = options[:image] || :success
|
10
14
|
title = options[:title] || "Guard"
|
11
15
|
case Config::CONFIG['target_os']
|
@@ -20,9 +24,9 @@ module Guard
|
|
20
24
|
end
|
21
25
|
end
|
22
26
|
end
|
23
|
-
|
27
|
+
|
24
28
|
private
|
25
|
-
|
29
|
+
|
26
30
|
def self.image_path(image)
|
27
31
|
images_path = Pathname.new(File.dirname(__FILE__)).join('../../images')
|
28
32
|
case image
|
@@ -37,7 +41,7 @@ module Guard
|
|
37
41
|
image
|
38
42
|
end
|
39
43
|
end
|
40
|
-
|
44
|
+
|
41
45
|
def self.growl_installed?
|
42
46
|
@installed ||= begin
|
43
47
|
require 'growl'
|
@@ -47,7 +51,7 @@ module Guard
|
|
47
51
|
false
|
48
52
|
end
|
49
53
|
end
|
50
|
-
|
54
|
+
|
51
55
|
def self.libnotify_installed?
|
52
56
|
@installed ||= begin
|
53
57
|
require 'libnotify'
|
@@ -57,6 +61,6 @@ module Guard
|
|
57
61
|
false
|
58
62
|
end
|
59
63
|
end
|
60
|
-
|
64
|
+
|
61
65
|
end
|
62
66
|
end
|
data/lib/guard/ui.rb
CHANGED
@@ -1,46 +1,46 @@
|
|
1
1
|
module Guard
|
2
2
|
module UI
|
3
3
|
class << self
|
4
|
-
|
4
|
+
|
5
5
|
def info(message, options = {})
|
6
6
|
unless ENV["GUARD_ENV"] == "test"
|
7
7
|
reset_line if options[:reset]
|
8
8
|
puts reset_color(message) if message != ''
|
9
9
|
end
|
10
10
|
end
|
11
|
-
|
11
|
+
|
12
12
|
def error(message, options = {})
|
13
13
|
unless ENV["GUARD_ENV"] == "test"
|
14
14
|
reset_line if options[:reset]
|
15
15
|
puts "ERROR: #{message}"
|
16
16
|
end
|
17
17
|
end
|
18
|
-
|
18
|
+
|
19
19
|
def debug(message, options = {})
|
20
20
|
unless ENV["GUARD_ENV"] == "test"
|
21
21
|
reset_line if options[:reset]
|
22
22
|
puts "DEBUG: #{message}" if ::Guard.options && ::Guard.options[:debug]
|
23
23
|
end
|
24
24
|
end
|
25
|
-
|
25
|
+
|
26
26
|
def reset_line
|
27
|
-
print "\r\e
|
27
|
+
print "\r\e[0m"
|
28
28
|
end
|
29
|
-
|
29
|
+
|
30
30
|
def clear
|
31
31
|
system("clear;")
|
32
32
|
end
|
33
|
-
|
33
|
+
|
34
34
|
private
|
35
|
-
|
35
|
+
|
36
36
|
def reset_color(text)
|
37
37
|
color(text, "\e[0m")
|
38
38
|
end
|
39
|
-
|
39
|
+
|
40
40
|
def color(text, color_code)
|
41
41
|
"#{color_code}#{text}\e[0m"
|
42
42
|
end
|
43
|
-
|
43
|
+
|
44
44
|
end
|
45
45
|
end
|
46
46
|
end
|
data/lib/guard/version.rb
CHANGED
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: guard
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 17
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 3
|
9
|
-
-
|
10
|
-
version: 0.3.
|
9
|
+
- 1
|
10
|
+
version: 0.3.1
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Thibaud Guillaume-Gentil
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-
|
18
|
+
date: 2011-04-14 00:00:00 +02:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
@@ -42,12 +42,12 @@ dependencies:
|
|
42
42
|
requirements:
|
43
43
|
- - ~>
|
44
44
|
- !ruby/object:Gem::Version
|
45
|
-
hash:
|
45
|
+
hash: 27
|
46
46
|
segments:
|
47
47
|
- 2
|
48
|
-
-
|
48
|
+
- 5
|
49
49
|
- 0
|
50
|
-
version: 2.
|
50
|
+
version: 2.5.0
|
51
51
|
type: :development
|
52
52
|
version_requirements: *id002
|
53
53
|
- !ruby/object:Gem::Dependency
|
@@ -58,12 +58,12 @@ dependencies:
|
|
58
58
|
requirements:
|
59
59
|
- - ~>
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
hash:
|
61
|
+
hash: 23
|
62
62
|
segments:
|
63
63
|
- 0
|
64
|
-
-
|
65
|
-
-
|
66
|
-
version: 0.
|
64
|
+
- 2
|
65
|
+
- 0
|
66
|
+
version: 0.2.0
|
67
67
|
type: :development
|
68
68
|
version_requirements: *id003
|
69
69
|
- !ruby/object:Gem::Dependency
|
@@ -82,22 +82,6 @@ dependencies:
|
|
82
82
|
version: 0.14.6
|
83
83
|
type: :runtime
|
84
84
|
version_requirements: *id004
|
85
|
-
- !ruby/object:Gem::Dependency
|
86
|
-
name: open_gem
|
87
|
-
prerelease: false
|
88
|
-
requirement: &id005 !ruby/object:Gem::Requirement
|
89
|
-
none: false
|
90
|
-
requirements:
|
91
|
-
- - ~>
|
92
|
-
- !ruby/object:Gem::Version
|
93
|
-
hash: 3
|
94
|
-
segments:
|
95
|
-
- 1
|
96
|
-
- 4
|
97
|
-
- 2
|
98
|
-
version: 1.4.2
|
99
|
-
type: :runtime
|
100
|
-
version_requirements: *id005
|
101
85
|
description: Guard is a command line tool to easily handle events on files modifications.
|
102
86
|
email:
|
103
87
|
- thibaud@thibaud.me
|