rufus-scheduler 2.0.8 → 2.0.9

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG.txt CHANGED
@@ -2,6 +2,13 @@
2
2
  = rufus-scheduler CHANGELOG.txt
3
3
 
4
4
 
5
+ == rufus-scheduler - 2.0.9 released 2010/04/22
6
+
7
+ - Scheduler#first_at and :discard_past => true. Thanks concept47
8
+ - Scheduler#cron and monthdays (sun#2 or mon#1)
9
+ - Scheduler#unschedule_by_tag(t)
10
+
11
+
5
12
  == rufus-scheduler - 2.0.8 released 2010/12/31
6
13
 
7
14
  - issue with cron '0 7-23/2 * * *' fixed. Thanks Pickerel
data/CREDITS.txt CHANGED
@@ -4,6 +4,7 @@
4
4
 
5
5
  == Contributors
6
6
 
7
+ - concept47 (https://github.com/concept47) every and :discard_past
7
8
  - Chris Kampemeier (http://github.com/chrisk) rspec 2.0 refinements
8
9
  - Tanzeeb Khalili (http://github.com/tanzeeb) cron and timezones
9
10
  - Adam Davies (http://github.com/adz), @allow_overlap = false
@@ -13,6 +14,7 @@
13
14
 
14
15
  == Feedback
15
16
 
17
+ - Defusal - unschedule_by_tag
16
18
  - pickerel - https://github.com/pickerel
17
19
  - Gonzalo Suarez - parse_time_string(s) issue
18
20
  - Tony Day - http://github.com/tonyday - every and overlapping timeout issue
data/README.rdoc CHANGED
@@ -22,7 +22,7 @@ More like complements :
22
22
 
23
23
  == installation
24
24
 
25
- sudo gem install rufus-scheduler --source http://gemcutter.org
25
+ gem install rufus-scheduler
26
26
 
27
27
 
28
28
  == usage
@@ -95,6 +95,12 @@ The timezones are the ones supported by the 'tzinfo' rubygem (http://tzinfo.ruby
95
95
 
96
96
  The timezone support was contributed by Tanzeeb Khalili.
97
97
 
98
+ Since 2.0.9, "monthdays" are supported
99
+
100
+ scheduler.cron '0 22 * * sun#1,sun#2' do
101
+ # every first and second sunday of the month, at 22:00
102
+ end
103
+
98
104
 
99
105
  == scheduler.join
100
106
 
@@ -166,7 +172,7 @@ Jobs scheduled with the :blocking parameter will run in the thread of the schedu
166
172
  puts "order espresso"
167
173
  end
168
174
 
169
- Hence, our espresso wil come in 22 minutes instead of 21.
175
+ Hence, our espresso will come in 22 minutes instead of 21.
170
176
 
171
177
 
172
178
  == 'every' jobs and :first_at / :first_in
@@ -191,6 +197,8 @@ The chronic gem may help (http://chronic.rubyforge.org/) :
191
197
  # do something starting this tueday
192
198
  end
193
199
 
200
+ Note : setting a :first_at/:first_in in the past will get rufus-scheduler to trigger for all the past schedules until now. Adding :discard_past => true will prevent this.
201
+
194
202
 
195
203
  == self unschedule for 'cron' and 'every' jobs
196
204
 
data/Rakefile CHANGED
@@ -2,6 +2,7 @@
2
2
  $:.unshift('.') # 1.9.2
3
3
 
4
4
  require 'rubygems'
5
+ require 'rubygems/user_interaction' if Gem::RubyGemsVersion == '1.5.0'
5
6
 
6
7
  require 'rake'
7
8
  require 'rake/clean'
@@ -78,7 +79,7 @@ desc %{
78
79
  task :upload_rdoc => [ :clean, :rdoc ] do
79
80
 
80
81
  account = 'jmettraux@rubyforge.org'
81
- webdir = "/var/www/gforge-projects/rufus"
82
+ webdir = '/var/www/gforge-projects/rufus'
82
83
 
83
84
  sh "rsync -azv -e ssh rdoc/#{GEMSPEC.name} #{account}:#{webdir}/"
84
85
  end
@@ -43,6 +43,7 @@ module Rufus
43
43
  attr_reader :days
44
44
  attr_reader :months
45
45
  attr_reader :weekdays
46
+ attr_reader :monthdays
46
47
  attr_reader :timezone
47
48
 
48
49
  def initialize(line)
@@ -67,7 +68,7 @@ module Rufus
67
68
  @hours = parse_item(items[1 + offset], 0, 24)
68
69
  @days = parse_item(items[2 + offset], 1, 31)
69
70
  @months = parse_item(items[3 + offset], 1, 12)
70
- @weekdays = parse_weekdays(items[4 + offset])
71
+ @weekdays, @monthdays = parse_weekdays(items[4 + offset])
71
72
  end
72
73
 
73
74
  # Returns true if the given time matches this cron line.
@@ -81,9 +82,7 @@ module Rufus
81
82
  return false unless sub_match?(time.sec, @seconds)
82
83
  return false unless sub_match?(time.min, @minutes)
83
84
  return false unless sub_match?(time.hour, @hours)
84
- return false unless sub_match?(time.day, @days)
85
- return false unless sub_match?(time.month, @months)
86
- return false unless sub_match?(time.wday, @weekdays)
85
+ return false unless date_match?(time)
87
86
  true
88
87
  end
89
88
 
@@ -164,26 +163,47 @@ module Rufus
164
163
  @days,
165
164
  @months,
166
165
  @weekdays,
166
+ @monthdays,
167
167
  @timezone ? @timezone.name : nil
168
168
  ]
169
169
  end
170
170
 
171
171
  private
172
172
 
173
- WDS = %w[ sun mon tue wed thu fri sat ]
174
- # used by parse_weekday()
173
+ WEEKDAYS = %w[ sun mon tue wed thu fri sat ]
175
174
 
176
175
  def parse_weekdays(item)
177
176
 
178
- item = item.downcase
177
+ return nil if item == '*'
178
+
179
+ items = item.downcase.split(',')
180
+
181
+ weekdays = nil
182
+ monthdays = nil
183
+
184
+ items.each do |it|
185
+
186
+ if it.match(/#[12345]$/)
187
+
188
+ raise ArgumentError.new(
189
+ "ranges are not supported for monthdays (#{it})"
190
+ ) if it.index('-')
179
191
 
180
- WDS.each_with_index { |day, index| item = item.gsub(day, index.to_s) }
192
+ (monthdays ||= []) << it
193
+ else
194
+
195
+ WEEKDAYS.each_with_index { |a, i| it.gsub!(/#{a}/, i.to_s) }
196
+
197
+ its = it.index('-') ? parse_range(it, 0, 7) : [ Integer(it) ]
198
+ its = its.collect { |i| i == 7 ? 0 : i }
199
+
200
+ (weekdays ||= []).concat(its)
201
+ end
202
+ end
181
203
 
182
- r = parse_item(item, 0, 7)
204
+ weekdays = weekdays.uniq if weekdays
183
205
 
184
- r.is_a?(Array) ?
185
- r.collect { |e| e == 7 ? 0 : e }.uniq :
186
- r
206
+ [ weekdays, monthdays ]
187
207
  end
188
208
 
189
209
  def parse_item(item, min, max)
@@ -255,13 +275,36 @@ module Rufus
255
275
  values.nil? || values.include?(value)
256
276
  end
257
277
 
278
+ def monthday_match(monthday, monthdays)
279
+
280
+ return true if monthdays == nil
281
+ return true if monthdays.include?(monthday)
282
+ end
283
+
258
284
  def date_match?(date)
259
285
 
260
286
  return false unless sub_match?(date.day, @days)
261
287
  return false unless sub_match?(date.month, @months)
262
288
  return false unless sub_match?(date.wday, @weekdays)
289
+ return false unless sub_match?(CronLine.monthday(date), @monthdays)
263
290
  true
264
291
  end
292
+
293
+ DAY_IN_SECONDS = 7 * 24 * 3600
294
+
295
+ def self.monthday(date)
296
+
297
+ count = 1
298
+ date2 = date.dup
299
+
300
+ loop do
301
+ date2 = date2 - DAY_IN_SECONDS
302
+ break if date2.month != date.month
303
+ count = count + 1
304
+ end
305
+
306
+ "#{WEEKDAYS[date.wday]}##{count}"
307
+ end
265
308
  end
266
309
  end
267
310
 
data/lib/rufus/sc/jobs.rb CHANGED
@@ -255,7 +255,9 @@ module Scheduler
255
255
  attr_reader :frequency
256
256
 
257
257
  def initialize(scheduler, t, params, &block)
258
+
258
259
  super
260
+
259
261
  determine_frequency
260
262
  determine_at
261
263
  end
@@ -284,17 +286,23 @@ module Scheduler
284
286
  @last = @at
285
287
  # the first time, @last will be nil
286
288
 
289
+ now = Time.now.to_f
290
+
287
291
  @at = if @last
288
292
  @last + @frequency
289
293
  else
290
294
  if fi = @params[:first_in]
291
- Time.now.to_f + Rufus.duration_to_f(fi)
295
+ now + Rufus.duration_to_f(fi)
292
296
  elsif fa = @params[:first_at]
293
297
  Rufus.at_to_f(fa)
294
298
  else
295
- Time.now.to_f + @frequency
299
+ now + @frequency
296
300
  end
297
301
  end
302
+
303
+ while @at < now do
304
+ @at += @frequency
305
+ end if @params[:discard_past]
298
306
  end
299
307
 
300
308
  # It's an every job, have to schedule next time it occurs...
@@ -184,6 +184,16 @@ module Rufus::Scheduler
184
184
  @jobs.unschedule(job_id) || @cron_jobs.unschedule(job_id)
185
185
  end
186
186
 
187
+ # Given a tag, unschedules all the jobs that bear that tag.
188
+ #
189
+ def unschedule_by_tag(tag)
190
+
191
+ jobs = find_by_tag(tag)
192
+ jobs.each { |job| unschedule(job.job_id) }
193
+
194
+ jobs
195
+ end
196
+
187
197
  #--
188
198
  # MISC
189
199
  #++
@@ -297,7 +307,7 @@ module Rufus::Scheduler
297
307
 
298
308
  complain_if_blocking_and_timeout(job)
299
309
 
300
- return if job.params[:discard_past] && Time.now.to_f >= job.at
310
+ return nil if job.params[:discard_past] && Time.now.to_f >= job.at
301
311
 
302
312
  @jobs << job
303
313
 
@@ -26,7 +26,7 @@
26
26
  module Rufus
27
27
  module Scheduler
28
28
 
29
- VERSION = '2.0.8'
29
+ VERSION = '2.0.9'
30
30
  end
31
31
  end
32
32
 
@@ -1,9 +1,12 @@
1
1
  # encoding: utf-8
2
2
 
3
+ load 'lib/rufus/sc/version.rb'
4
+
5
+
3
6
  Gem::Specification.new do |s|
4
7
 
5
8
  s.name = 'rufus-scheduler'
6
- s.version = File.read('lib/rufus/sc/version.rb').match(/VERSION = '([^']+)'/)[1]
9
+ s.version = Rufus::Scheduler::VERSION
7
10
  s.platform = Gem::Platform::RUBY
8
11
  s.authors = [ 'John Mettraux' ]
9
12
  s.email = [ 'jmettraux@gmail.com' ]
data/spec/at_spec.rb CHANGED
@@ -84,6 +84,21 @@ describe "#{SCHEDULER_CLASS}#schedule_at" do
84
84
  @s.find_by_tag('spec').size.should == 1
85
85
  @s.find_by_tag('spec').first.job_id.should == job.job_id
86
86
  end
87
+
88
+ it 'accepts unschedule_by_tag' do
89
+
90
+ 3.times do
91
+ @s.at Time.now + 3 * 3600, :tags => 'spec' do
92
+ end
93
+ end
94
+
95
+ sleep 0.500
96
+
97
+ r = @s.unschedule_by_tag('spec')
98
+
99
+ r.size.should == 3
100
+ r.first.class.should == Rufus::Scheduler::AtJob
101
+ end
87
102
  end
88
103
 
89
104
  describe Rufus::Scheduler::AtJob do
@@ -17,6 +17,9 @@ describe Rufus::CronLine do
17
17
  def match(line, time)
18
18
  cl(line).matches?(time).should == true
19
19
  end
20
+ def no_match(line, time)
21
+ cl(line).matches?(time).should == false
22
+ end
20
23
  def to_a(line, array)
21
24
  cl(line).to_array.should == array
22
25
  end
@@ -32,29 +35,31 @@ describe Rufus::CronLine do
32
35
 
33
36
  it 'interprets cron strings correctly' do
34
37
 
35
- to_a '* * * * *', [ [0], nil, nil, nil, nil, nil, nil ]
36
- to_a '10-12 * * * *', [ [0], [10, 11, 12], nil, nil, nil, nil, nil ]
37
- to_a '* * * * sun,mon', [ [0], nil, nil, nil, nil, [0, 1], nil ]
38
- to_a '* * * * mon-wed', [ [0], nil, nil, nil, nil, [1, 2, 3], nil ]
39
- to_a '* * * * 7', [ [0], nil, nil, nil, nil, [0], nil ]
40
- to_a '* * * * 0', [ [0], nil, nil, nil, nil, [0], nil ]
41
- to_a '* * * * 0,1', [ [0], nil, nil, nil, nil, [0,1], nil ]
42
- to_a '* * * * 7,1', [ [0], nil, nil, nil, nil, [0,1], nil ]
43
- to_a '* * * * 7,0', [ [0], nil, nil, nil, nil, [0], nil ]
44
- to_a '* * * * sun,2-4', [ [0], nil, nil, nil, nil, [0, 2, 3, 4], nil ]
45
-
46
- to_a '* * * * sun,mon-tue', [ [0], nil, nil, nil, nil, [0, 1, 2], nil ]
47
-
48
- to_a '* * * * * *', [ nil, nil, nil, nil, nil, nil, nil ]
49
- to_a '1 * * * * *', [ [1], nil, nil, nil, nil, nil, nil ]
50
- to_a '7 10-12 * * * *', [ [7], [10, 11, 12], nil, nil, nil, nil, nil ]
51
- to_a '1-5 * * * * *', [ [1,2,3,4,5], nil, nil, nil, nil, nil, nil ]
38
+ to_a '* * * * *', [ [0], nil, nil, nil, nil, nil, nil, nil ]
39
+ to_a '10-12 * * * *', [ [0], [10, 11, 12], nil, nil, nil, nil, nil, nil ]
40
+ to_a '* * * * sun,mon', [ [0], nil, nil, nil, nil, [0, 1], nil, nil ]
41
+ to_a '* * * * mon-wed', [ [0], nil, nil, nil, nil, [1, 2, 3], nil, nil ]
42
+ to_a '* * * * 7', [ [0], nil, nil, nil, nil, [0], nil, nil ]
43
+ to_a '* * * * 0', [ [0], nil, nil, nil, nil, [0], nil, nil ]
44
+ to_a '* * * * 0,1', [ [0], nil, nil, nil, nil, [0,1], nil, nil ]
45
+ to_a '* * * * 7,1', [ [0], nil, nil, nil, nil, [0,1], nil, nil ]
46
+ to_a '* * * * 7,0', [ [0], nil, nil, nil, nil, [0], nil, nil ]
47
+ to_a '* * * * sun,2-4', [ [0], nil, nil, nil, nil, [0, 2, 3, 4], nil, nil ]
48
+
49
+ to_a '* * * * sun,mon-tue', [ [0], nil, nil, nil, nil, [0, 1, 2], nil, nil ]
50
+
51
+ to_a '* * * * * *', [ nil, nil, nil, nil, nil, nil, nil, nil ]
52
+ to_a '1 * * * * *', [ [1], nil, nil, nil, nil, nil, nil, nil ]
53
+ to_a '7 10-12 * * * *', [ [7], [10, 11, 12], nil, nil, nil, nil, nil, nil ]
54
+ to_a '1-5 * * * * *', [ [1,2,3,4,5], nil, nil, nil, nil, nil, nil, nil ]
55
+
56
+ to_a '0 0 1 1 *', [ [0], [0], [0], [1], [1], nil, nil, nil ]
52
57
  end
53
58
 
54
59
  it 'interprets cron strings with TZ correctly' do
55
60
 
56
- to_a '* * * * * EST', [ [0], nil, nil, nil, nil, nil, 'EST' ]
57
- to_a '* * * * * * EST', [ nil, nil, nil, nil, nil, nil, 'EST' ]
61
+ to_a '* * * * * EST', [ [0], nil, nil, nil, nil, nil, nil, 'EST' ]
62
+ to_a '* * * * * * EST', [ nil, nil, nil, nil, nil, nil, nil, 'EST' ]
58
63
 
59
64
  lambda { cl '* * * * * NotATimeZone' }.should raise_error
60
65
  lambda { cl '* * * * * * NotATimeZone' }.should raise_error
@@ -64,13 +69,20 @@ describe Rufus::CronLine do
64
69
 
65
70
  to_a(
66
71
  '0 */2 * * *',
67
- [[0], [0], [0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24], nil, nil, nil, nil])
72
+ [ [0], [0], (0..12).collect { |e| e * 2 }, nil, nil, nil, nil, nil ])
68
73
  to_a(
69
74
  '0 7-23/2 * * *',
70
- [[0], [0], [7, 9, 11, 13, 15, 17, 19, 21, 23], nil, nil, nil, nil])
75
+ [ [0], [0], (7..23).select { |e| e.odd? }, nil, nil, nil, nil, nil ])
71
76
  to_a(
72
77
  '*/10 * * * *',
73
- [[0], [0, 10, 20, 30, 40, 50], nil, nil, nil, nil, nil])
78
+ [ [0], [0, 10, 20, 30, 40, 50], nil, nil, nil, nil, nil, nil ])
79
+ end
80
+
81
+ it 'does not support ranges for monthdays (sun#1-sun#2)' do
82
+
83
+ lambda {
84
+ Rufus::CronLine.new('* * * * sun#1-sun#2')
85
+ }.should raise_error(ArgumentError)
74
86
  end
75
87
  end
76
88
 
@@ -99,10 +111,6 @@ describe Rufus::CronLine do
99
111
  nt('* * * * *', now).should == now + 1
100
112
  end
101
113
 
102
- #
103
- # the specs that follow are from Tanzeeb Khalili
104
- #
105
-
106
114
  it 'computes the next occurence correctly in UTC (TZ not specified)' do
107
115
 
108
116
  now = utc(1970, 1, 1)
@@ -166,6 +174,29 @@ describe Rufus::CronLine do
166
174
  # nt("* * 1 6 * #{zone}", now).should == local(1970, 5, 31, 19)
167
175
  # nt("0 0 * * thu #{zone}", now).should == local(1970, 1, 7, 18)
168
176
  #end
177
+
178
+ it 'computes the next time correctly when there is a sun#2 involved' do
179
+
180
+ now = local(1970, 1, 1)
181
+
182
+ nt('* * * * sun#1', now).should == local(1970, 1, 4)
183
+ nt('* * * * sun#2', now).should == local(1970, 1, 11)
184
+
185
+ now = local(1970, 1, 12)
186
+
187
+ nt('* * * * sun#2', now).should == local(1970, 2, 8)
188
+ end
189
+
190
+ it 'computes the next time correctly when there is a sun#2,sun#3 involved' do
191
+
192
+ now = local(1970, 1, 1)
193
+
194
+ nt('* * * * sun#2,sun#3', now).should == local(1970, 1, 11)
195
+
196
+ now = local(1970, 1, 12)
197
+
198
+ nt('* * * * sun#2,sun#3', now).should == local(1970, 1, 18)
199
+ end
169
200
  end
170
201
 
171
202
  describe '#matches?' do
@@ -181,6 +212,9 @@ describe Rufus::CronLine do
181
212
  match '* * 1 6 *', utc(1970, 6, 1)
182
213
 
183
214
  match '0 0 * * thu', utc(1970, 1, 8)
215
+
216
+ match '0 0 1 1 *', utc(2012, 1, 1)
217
+ no_match '0 0 1 1 *', utc(2012, 1, 1, 1, 0)
184
218
  end
185
219
 
186
220
  it 'matches correctly in local TZ (TZ not specified)' do
@@ -194,6 +228,9 @@ describe Rufus::CronLine do
194
228
  match '* * 1 6 *', local(1970, 6, 1)
195
229
 
196
230
  match '0 0 * * thu', local(1970, 1, 8)
231
+
232
+ match '0 0 1 1 *', local(2012, 1, 1)
233
+ no_match '0 0 1 1 *', local(2012, 1, 1, 1, 0)
197
234
  end
198
235
 
199
236
  it 'matches correctly in UTC (TZ specified)' do
@@ -210,6 +247,33 @@ describe Rufus::CronLine do
210
247
 
211
248
  match "0 0 * * thu #{zone}", utc(1970, 1, 7, 23)
212
249
  end
250
+
251
+ it 'matches correctly when there is a sun#2 involved' do
252
+
253
+ match '* * 13 * fri#2', utc(1970, 2, 13)
254
+ no_match '* * 13 * fri#2', utc(1970, 2, 20)
255
+ end
256
+
257
+ it 'matches correctly when there is a sun#2,sun#3 involved' do
258
+
259
+ no_match '* * * * sun#2,sun#3', local(1970, 1, 4)
260
+ match '* * * * sun#2,sun#3', local(1970, 1, 11)
261
+ match '* * * * sun#2,sun#3', local(1970, 1, 18)
262
+ no_match '* * * * sun#2,sun#3', local(1970, 1, 25)
263
+ end
264
+ end
265
+
266
+ describe '.monthday' do
267
+
268
+ it 'returns the appropriate "sun#2"-like string' do
269
+
270
+ d = local(1970, 1, 1)
271
+ Rufus::CronLine.monthday(d).should == 'thu#1'
272
+ Rufus::CronLine.monthday(d + 6 * 24 * 3600).should == 'wed#1'
273
+ Rufus::CronLine.monthday(d + 13 * 24 * 3600).should == 'wed#2'
274
+
275
+ Rufus::CronLine.monthday(local(2011, 3, 11)).should == 'fri#2'
276
+ end
213
277
  end
214
278
  end
215
279
 
data/spec/every_spec.rb CHANGED
@@ -95,7 +95,7 @@ describe "#{SCHEDULER_CLASS}#every" do
95
95
 
96
96
  counter = 0
97
97
 
98
- job = @s.every '1s', :first_at => Time.now + 2 do
98
+ @s.every '1s', :first_at => Time.now + 2 do
99
99
  counter += 1
100
100
  end
101
101
 
@@ -106,11 +106,35 @@ describe "#{SCHEDULER_CLASS}#every" do
106
106
  counter.should == 2
107
107
  end
108
108
 
109
+ it 'triggers for the missed schedules when :first_at is in the past' do
110
+
111
+ counter = 0
112
+
113
+ @s.every '1s', :first_at => Time.now - 2 do
114
+ counter += 1
115
+ end
116
+
117
+ wait_next_tick
118
+ counter.should == 3
119
+ end
120
+
121
+ it 'does not trigger for the missed schedules when :first_at is in the past and :discard_past => true' do
122
+
123
+ counter = 0
124
+
125
+ @s.every '1s', :first_at => Time.now - 2, :discard_past => true do
126
+ counter += 1
127
+ end
128
+
129
+ wait_next_tick
130
+ counter.should == 0
131
+ end
132
+
109
133
  it 'honours :first_in' do
110
134
 
111
135
  counter = 0
112
136
 
113
- job = @s.every '1s', :first_in => 2 do
137
+ @s.every '1s', :first_in => 2 do
114
138
  counter += 1
115
139
  end
116
140
 
data/spec/in_spec.rb CHANGED
@@ -77,17 +77,26 @@ describe "#{SCHEDULER_CLASS}#in" do
77
77
  var.should == true
78
78
  end
79
79
 
80
+ it 'returns the new job' do
81
+
82
+ r = @s.in '1s' do
83
+ end
84
+
85
+ r.class.should == Rufus::Scheduler::InJob
86
+ end
87
+
80
88
  it 'triggers [almost] immediately jobs in the past' do
81
89
 
82
90
  var = nil
83
91
 
84
- @s.in -2 do
92
+ r = @s.in -2 do
85
93
  var = true
86
94
  end
87
95
 
88
96
  #wait_next_tick
89
97
  sleep 0.550
90
98
 
99
+ r.class.should == Rufus::Scheduler::InJob
91
100
  var.should == true
92
101
  @s.jobs.should == {}
93
102
  end
@@ -96,10 +105,11 @@ describe "#{SCHEDULER_CLASS}#in" do
96
105
 
97
106
  var = nil
98
107
 
99
- @s.in -2, :discard_past => true do
108
+ r = @s.in -2, :discard_past => true do
100
109
  var = true
101
110
  end
102
111
 
112
+ r.should == nil
103
113
  var.should == nil
104
114
  @s.jobs.should == {}
105
115
  end
metadata CHANGED
@@ -1,12 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rufus-scheduler
3
3
  version: !ruby/object:Gem::Version
4
- prerelease: false
4
+ hash: 29
5
+ prerelease:
5
6
  segments:
6
7
  - 2
7
8
  - 0
8
- - 8
9
- version: 2.0.8
9
+ - 9
10
+ version: 2.0.9
10
11
  platform: ruby
11
12
  authors:
12
13
  - John Mettraux
@@ -14,7 +15,7 @@ autorequire:
14
15
  bindir: bin
15
16
  cert_chain: []
16
17
 
17
- date: 2010-12-31 00:00:00 +09:00
18
+ date: 2011-04-22 00:00:00 +09:00
18
19
  default_executable:
19
20
  dependencies:
20
21
  - !ruby/object:Gem::Dependency
@@ -25,6 +26,7 @@ dependencies:
25
26
  requirements:
26
27
  - - ">="
27
28
  - !ruby/object:Gem::Version
29
+ hash: 61
28
30
  segments:
29
31
  - 0
30
32
  - 3
@@ -40,6 +42,7 @@ dependencies:
40
42
  requirements:
41
43
  - - ">="
42
44
  - !ruby/object:Gem::Version
45
+ hash: 3
43
46
  segments:
44
47
  - 0
45
48
  version: "0"
@@ -53,6 +56,7 @@ dependencies:
53
56
  requirements:
54
57
  - - ">="
55
58
  - !ruby/object:Gem::Version
59
+ hash: 3
56
60
  segments:
57
61
  - 2
58
62
  - 0
@@ -98,9 +102,9 @@ files:
98
102
  - rufus-scheduler.gemspec
99
103
  - CHANGELOG.txt
100
104
  - CREDITS.txt
105
+ - dump.txt
101
106
  - LICENSE.txt
102
107
  - TODO.txt
103
- - dump.txt
104
108
  - README.rdoc
105
109
  has_rdoc: true
106
110
  homepage: http://github.com/jmettraux/rufus-scheduler
@@ -116,6 +120,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
116
120
  requirements:
117
121
  - - ">="
118
122
  - !ruby/object:Gem::Version
123
+ hash: 3
119
124
  segments:
120
125
  - 0
121
126
  version: "0"
@@ -124,13 +129,14 @@ required_rubygems_version: !ruby/object:Gem::Requirement
124
129
  requirements:
125
130
  - - ">="
126
131
  - !ruby/object:Gem::Version
132
+ hash: 3
127
133
  segments:
128
134
  - 0
129
135
  version: "0"
130
136
  requirements: []
131
137
 
132
138
  rubyforge_project: rufus
133
- rubygems_version: 1.3.7
139
+ rubygems_version: 1.5.0
134
140
  signing_key:
135
141
  specification_version: 3
136
142
  summary: job scheduler for Ruby (at, cron, in and every jobs)