guard 0.3.0 → 0.3.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.
- 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
|