say_when 0.3.0 → 0.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 +7 -0
- data/Gemfile +8 -0
- data/Rakefile +9 -1
- data/lib/generators/say_when/migration/templates/migration.rb +5 -3
- data/lib/say_when/scheduler.rb +52 -52
- data/lib/say_when/version.rb +1 -1
- data/say_when.gemspec +2 -3
- data/spec/active_record_spec_helper.rb +0 -2
- data/spec/db/schema.rb +4 -2
- data/spec/say_when/cron_expression_spec.rb +1 -1
- data/spec/say_when/processor/active_messaging_spec.rb +3 -4
- data/spec/say_when/scheduler_spec.rb +6 -6
- data/spec/say_when/storage/active_record/job_spec.rb +6 -6
- data/spec/say_when/storage/memory/job_spec.rb +2 -2
- data/spec/say_when/storage/memory/trigger_spec.rb +1 -1
- data/spec/say_when/triggers/once_strategy_spec.rb +2 -2
- data/spec/spec_helper.rb +7 -0
- metadata +91 -121
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: ff56cfaa645736fcace3c95f0d9f20a35b7785aa2be6cd544caee8ecb3d0b537
|
4
|
+
data.tar.gz: e04c3cbf9dfff48405d88a574aab8ebd1bf85bb747f6223efa3df184f9e485bb
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 16b737f008959d234f85f9d8100bb5503500c6b0d8acdb5c78f9306e7c7ac7166571d9021a69daba2406e29e112cba8e0b0b27bd222edb7dfae6b2ceb62f8264
|
7
|
+
data.tar.gz: 020d6842616be2b4984f6f7202279d09660646b112a7d0b24cffad38a6be711a1ee257f12eb4fc64aaa861816e2ba75673f773b4bca54c1af131b91029198ebe
|
data/Gemfile
CHANGED
@@ -2,3 +2,11 @@ source "http://rubygems.org"
|
|
2
2
|
|
3
3
|
# Specify your gem's dependencies in say_when.gemspec
|
4
4
|
gemspec
|
5
|
+
|
6
|
+
gem "rspec", "=1.3.2", git: 'https://github.com/makandra/rspec.git', branch: '1-3-lts'
|
7
|
+
|
8
|
+
git 'https://github.com/makandra/rails.git', :branch => '2-3-lts' do
|
9
|
+
gem 'rails', '~>2.3.18'
|
10
|
+
gem 'activesupport', :require => false
|
11
|
+
gem 'railslts-version', :require => false
|
12
|
+
end
|
data/Rakefile
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
class CreateSayWhenTables < ActiveRecord::Migration
|
2
|
-
|
2
|
+
|
3
3
|
def self.up
|
4
4
|
|
5
5
|
create_table :say_when_jobs, :force => true do |t|
|
@@ -35,11 +35,13 @@ class CreateSayWhenTables < ActiveRecord::Migration
|
|
35
35
|
t.datetime :start_at
|
36
36
|
t.datetime :end_at
|
37
37
|
end
|
38
|
-
|
38
|
+
|
39
39
|
add_index :say_when_jobs, :status
|
40
40
|
add_index :say_when_jobs, :next_fire_at
|
41
|
+
add_index :say_when_jobs, [:next_fire_at, :status]
|
42
|
+
add_index :say_when_jobs, [:last_fire_at, :status]
|
41
43
|
end
|
42
|
-
|
44
|
+
|
43
45
|
def self.down
|
44
46
|
drop_table :say_when_job_executions
|
45
47
|
drop_table :say_when_jobs
|
data/lib/say_when/scheduler.rb
CHANGED
@@ -8,7 +8,7 @@ module SayWhen
|
|
8
8
|
@@scheduler = nil
|
9
9
|
@@lock = nil
|
10
10
|
|
11
|
-
attr_accessor :storage_strategy, :processor_class, :tick_length, :reset_acquired_length
|
11
|
+
attr_accessor :storage_strategy, :processor_class, :tick_length, :reset_acquired_length, :reset_next_at
|
12
12
|
|
13
13
|
attr_accessor :running
|
14
14
|
|
@@ -63,61 +63,13 @@ module SayWhen
|
|
63
63
|
trap("TERM", "EXIT")
|
64
64
|
|
65
65
|
begin
|
66
|
-
|
67
66
|
self.running = true
|
68
67
|
|
69
68
|
logger.info "SayWhen::Scheduler running"
|
70
|
-
job = nil
|
71
|
-
reset_next_at = Time.now
|
72
69
|
while running
|
73
|
-
|
74
|
-
time_now = Time.now
|
75
|
-
|
76
|
-
if reset_acquired_length > 0 && reset_next_at <= time_now
|
77
|
-
reset_next_at = time_now + reset_acquired_length
|
78
|
-
logger.debug "SayWhen:: reset acquired at #{time_now}, try again at #{reset_next_at}"
|
79
|
-
job_class.reset_acquired(reset_acquired_length)
|
80
|
-
end
|
81
|
-
|
82
|
-
begin
|
83
|
-
logger.debug "SayWhen:: Looking for job that should be ready to fire before #{time_now}"
|
84
|
-
job = job_class.acquire_next(time_now)
|
85
|
-
rescue StandardError => ex
|
86
|
-
job_error("Failure to acquire job", job, ex)
|
87
|
-
job = nil
|
88
|
-
end
|
89
|
-
|
90
|
-
if job.nil?
|
91
|
-
logger.debug "SayWhen:: no jobs to acquire, sleep"
|
92
|
-
sleep(tick_length)
|
93
|
-
next
|
94
|
-
end
|
95
|
-
|
96
|
-
begin
|
97
|
-
logger.debug "SayWhen:: got a job: #{job.inspect}"
|
98
|
-
# delegate processing the trigger to the processor
|
99
|
-
self.processor.process(job)
|
100
|
-
logger.debug "SayWhen:: job processed"
|
101
|
-
|
102
|
-
# if successful, update next fire at, put back to waiting / ended
|
103
|
-
job.fired(time_now)
|
104
|
-
logger.debug "SayWhen:: job fired complete"
|
105
|
-
rescue StandardError=>ex
|
106
|
-
job_error("Failure to process", job, ex)
|
107
|
-
end
|
108
|
-
|
109
|
-
rescue Interrupt => ex
|
110
|
-
job_error("Interrupt!", job, ex)
|
111
|
-
raise ex
|
112
|
-
rescue StandardError => ex
|
113
|
-
job_error("Error!", job, ex)
|
114
|
-
sleep(tick_length)
|
115
|
-
rescue Exception => ex
|
116
|
-
job_error("Exception!", job, ex)
|
117
|
-
raise ex
|
118
|
-
end
|
70
|
+
process_jobs
|
119
71
|
end
|
120
|
-
rescue Exception=>ex
|
72
|
+
rescue Exception => ex
|
121
73
|
logger.error "SayWhen::Scheduler stopping, error: #{ex.class.name}: #{ex.message}"
|
122
74
|
exit
|
123
75
|
end
|
@@ -125,6 +77,55 @@ module SayWhen
|
|
125
77
|
logger.info "SayWhen::Scheduler stopped"
|
126
78
|
end
|
127
79
|
|
80
|
+
def process_jobs
|
81
|
+
job = nil
|
82
|
+
time_now = Time.now
|
83
|
+
self.reset_next_at ||= Time.now
|
84
|
+
|
85
|
+
if reset_acquired_length > 0 && reset_next_at <= time_now
|
86
|
+
self.reset_next_at = time_now + reset_acquired_length
|
87
|
+
logger.debug "SayWhen:: reset acquired at #{time_now}, try again at #{reset_next_at}"
|
88
|
+
job_class.reset_acquired(reset_acquired_length)
|
89
|
+
end
|
90
|
+
|
91
|
+
begin
|
92
|
+
logger.debug "SayWhen:: Looking for job that should be ready to fire before #{time_now}"
|
93
|
+
job = job_class.acquire_next(time_now)
|
94
|
+
rescue StandardError => ex
|
95
|
+
job_error("Failure to acquire job", job, ex)
|
96
|
+
job = nil
|
97
|
+
end
|
98
|
+
|
99
|
+
if job.nil?
|
100
|
+
logger.debug "SayWhen:: no jobs to acquire, sleep"
|
101
|
+
sleep(tick_length)
|
102
|
+
return
|
103
|
+
end
|
104
|
+
|
105
|
+
begin
|
106
|
+
logger.debug "SayWhen:: got a job: #{job.inspect}"
|
107
|
+
# delegate processing the trigger to the processor
|
108
|
+
self.processor.process(job)
|
109
|
+
logger.debug "SayWhen:: job processed"
|
110
|
+
|
111
|
+
# if successful, update next fire at, put back to waiting / ended
|
112
|
+
job.fired(time_now)
|
113
|
+
logger.debug "SayWhen:: job fired complete"
|
114
|
+
rescue StandardError => ex
|
115
|
+
job_error("Failure to process", job, ex)
|
116
|
+
end
|
117
|
+
|
118
|
+
rescue Interrupt => ex
|
119
|
+
job_error("Interrupt!", job, ex)
|
120
|
+
raise ex
|
121
|
+
rescue StandardError => ex
|
122
|
+
job_error("Error!", job, ex)
|
123
|
+
sleep(tick_length)
|
124
|
+
rescue Exception => ex
|
125
|
+
job_error("Exception!", job, ex)
|
126
|
+
raise ex
|
127
|
+
end
|
128
|
+
|
128
129
|
def job_error(msg, job, ex)
|
129
130
|
job_msg = job && " job:'#{job.inspect}'"
|
130
131
|
logger.error "SayWhen::Scheduler #{msg}#{job_msg}: #{ex.message}\n\t#{ex.backtrace.join("\t\n")}"
|
@@ -154,6 +155,5 @@ module SayWhen
|
|
154
155
|
def logger
|
155
156
|
SayWhen::logger
|
156
157
|
end
|
157
|
-
|
158
158
|
end
|
159
159
|
end
|
data/lib/say_when/version.rb
CHANGED
data/say_when.gemspec
CHANGED
@@ -18,8 +18,7 @@ Gem::Specification.new do |s|
|
|
18
18
|
s.add_development_dependency "activemessaging", '~> 0.9.0'
|
19
19
|
s.add_development_dependency "activesupport", '~> 2.3.14'
|
20
20
|
s.add_development_dependency "activerecord", '~> 2.3.14'
|
21
|
-
s.add_development_dependency 'rspec',
|
21
|
+
s.add_development_dependency 'rspec', '~> 1.3'
|
22
|
+
s.add_development_dependency 'rake', '~> 10.5.0'
|
22
23
|
s.add_development_dependency 'sqlite3'
|
23
|
-
s.add_development_dependency 'rake', '~> 0.8.7'
|
24
|
-
|
25
24
|
end
|
data/spec/db/schema.rb
CHANGED
@@ -28,9 +28,11 @@ ActiveRecord::Schema.define(:version => 0) do
|
|
28
28
|
t.datetime :start_at
|
29
29
|
t.datetime :end_at
|
30
30
|
end
|
31
|
-
|
31
|
+
|
32
32
|
add_index :say_when_jobs, :status
|
33
33
|
add_index :say_when_jobs, :next_fire_at
|
34
|
+
add_index :say_when_jobs, [:next_fire_at, :status]
|
35
|
+
add_index :say_when_jobs, [:last_fire_at, :status]
|
34
36
|
|
35
37
|
|
36
|
-
end
|
38
|
+
end
|
@@ -1,7 +1,6 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
require File.dirname(__FILE__) + '/../../../lib/say_when/storage/active_record/job'
|
1
|
+
require_relative '../../spec_helper'
|
2
|
+
require_relative '../../../lib/say_when/processor/active_messaging'
|
3
|
+
require_relative '../../../lib/say_when/storage/active_record/job'
|
5
4
|
|
6
5
|
def destination(destination_name)
|
7
6
|
d = ActiveMessaging::Gateway.find_destination(destination_name).value
|
@@ -1,5 +1,5 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
require_relative '../spec_helper'
|
2
|
+
require_relative '../active_record_spec_helper'
|
3
3
|
|
4
4
|
describe SayWhen::Scheduler do
|
5
5
|
|
@@ -58,15 +58,15 @@ describe SayWhen::Scheduler do
|
|
58
58
|
it "should start the scheduler running and stop it" do
|
59
59
|
@scheduler.running.should be_false
|
60
60
|
|
61
|
-
puts 'starting'
|
61
|
+
# puts 'starting'
|
62
62
|
scheduler_thread = Thread.start{@scheduler.start}
|
63
|
-
puts 'started'
|
63
|
+
# puts 'started'
|
64
64
|
sleep(0.1)
|
65
65
|
@scheduler.running.should == true
|
66
66
|
|
67
|
-
puts 'stop'
|
67
|
+
# puts 'stop'
|
68
68
|
@scheduler.stop
|
69
|
-
puts 'wait for it'
|
69
|
+
# puts 'wait for it'
|
70
70
|
@scheduler.running.should == false
|
71
71
|
end
|
72
72
|
|
@@ -1,6 +1,6 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
1
|
+
require_relative '../../../spec_helper'
|
2
|
+
require_relative '../../../active_record_spec_helper'
|
3
|
+
require_relative '../../../../lib/say_when/storage/active_record/job'
|
4
4
|
|
5
5
|
describe SayWhen::Storage::ActiveRecord::Job do
|
6
6
|
|
@@ -66,14 +66,15 @@ describe SayWhen::Storage::ActiveRecord::Job do
|
|
66
66
|
j2_opts = {
|
67
67
|
:trigger_strategy => :cron,
|
68
68
|
:trigger_options => {:expression => '0 0 10 ? * * *', :time_zone => 'Pacific Time (US & Canada)'},
|
69
|
-
:data => {:foo=>'
|
69
|
+
:data => {:foo=>'can find the next job - j2', :result=>2},
|
70
70
|
:job_class => 'SayWhen::Test::TestTask',
|
71
71
|
:job_method => 'execute'
|
72
72
|
}
|
73
73
|
|
74
74
|
j1 = SayWhen::Storage::ActiveRecord::Job.create(@valid_attributes)
|
75
75
|
j2 = SayWhen::Storage::ActiveRecord::Job.create(j2_opts)
|
76
|
-
|
76
|
+
acquire = 1.day.since
|
77
|
+
next_job = SayWhen::Storage::ActiveRecord::Job.acquire_next(acquire)
|
77
78
|
next_job.should == j2
|
78
79
|
end
|
79
80
|
|
@@ -94,5 +95,4 @@ describe SayWhen::Storage::ActiveRecord::Job do
|
|
94
95
|
j.last_fire_at.should == now
|
95
96
|
j.status.should == SayWhen::BaseJob::STATE_WAITING
|
96
97
|
end
|
97
|
-
|
98
98
|
end
|
@@ -1,5 +1,5 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
require_relative '../../../spec_helper'
|
2
|
+
require_relative '../../../../lib/say_when/storage/memory/job'
|
3
3
|
|
4
4
|
describe SayWhen::Store::Memory::Job do
|
5
5
|
|
@@ -1,5 +1,5 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
require_relative '../../spec_helper'
|
2
|
+
require_relative '../../../lib/say_when/triggers/once_strategy'
|
3
3
|
|
4
4
|
describe SayWhen::Triggers::OnceStrategy do
|
5
5
|
|
data/spec/spec_helper.rb
CHANGED
@@ -3,6 +3,7 @@ ENV['RAILS_ENV']='test'
|
|
3
3
|
require "rubygems"
|
4
4
|
require 'bundler/setup'
|
5
5
|
require 'active_support'
|
6
|
+
require 'active_record'
|
6
7
|
|
7
8
|
require 'spec'
|
8
9
|
require 'spec/autorun'
|
@@ -10,8 +11,14 @@ require 'spec/autorun'
|
|
10
11
|
$: << (File.dirname(__FILE__) + "/../lib")
|
11
12
|
require "say_when"
|
12
13
|
|
14
|
+
logger = Logger.new(STDOUT)
|
15
|
+
logger.level = Logger::ERROR
|
16
|
+
SayWhen.logger = logger
|
17
|
+
::ActiveRecord::Base.logger = logger
|
18
|
+
|
13
19
|
Dir[File.expand_path(File.join(File.dirname(__FILE__),'support','**','*.rb'))].each {|f| require f}
|
14
20
|
|
21
|
+
|
15
22
|
Spec::Runner.configure do |config|
|
16
23
|
config.mock_with :rspec
|
17
24
|
end
|
metadata
CHANGED
@@ -1,127 +1,108 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: say_when
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
prerelease:
|
6
|
-
segments:
|
7
|
-
- 0
|
8
|
-
- 3
|
9
|
-
- 0
|
10
|
-
version: 0.3.0
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.4.0
|
11
5
|
platform: ruby
|
12
|
-
authors:
|
6
|
+
authors:
|
13
7
|
- Andrew Kuklewicz
|
14
8
|
autorequire:
|
15
9
|
bindir: bin
|
16
10
|
cert_chain: []
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
- !ruby/object:Gem::Dependency
|
21
|
-
prerelease: false
|
22
|
-
version_requirements: &id001 !ruby/object:Gem::Requirement
|
23
|
-
none: false
|
24
|
-
requirements:
|
25
|
-
- - ~>
|
26
|
-
- !ruby/object:Gem::Version
|
27
|
-
hash: 59
|
28
|
-
segments:
|
29
|
-
- 0
|
30
|
-
- 9
|
31
|
-
- 0
|
32
|
-
version: 0.9.0
|
33
|
-
requirement: *id001
|
11
|
+
date: 2022-04-12 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
34
14
|
name: activemessaging
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 0.9.0
|
35
20
|
type: :development
|
36
|
-
- !ruby/object:Gem::Dependency
|
37
21
|
prerelease: false
|
38
|
-
version_requirements:
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
segments:
|
45
|
-
- 2
|
46
|
-
- 3
|
47
|
-
- 14
|
48
|
-
version: 2.3.14
|
49
|
-
requirement: *id002
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 0.9.0
|
27
|
+
- !ruby/object:Gem::Dependency
|
50
28
|
name: activesupport
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 2.3.14
|
51
34
|
type: :development
|
52
|
-
- !ruby/object:Gem::Dependency
|
53
35
|
prerelease: false
|
54
|
-
version_requirements:
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
- !ruby/object:Gem::Version
|
59
|
-
hash: 31
|
60
|
-
segments:
|
61
|
-
- 2
|
62
|
-
- 3
|
63
|
-
- 14
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
64
40
|
version: 2.3.14
|
65
|
-
|
41
|
+
- !ruby/object:Gem::Dependency
|
66
42
|
name: activerecord
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: 2.3.14
|
67
48
|
type: :development
|
68
|
-
- !ruby/object:Gem::Dependency
|
69
49
|
prerelease: false
|
70
|
-
version_requirements:
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
segments:
|
77
|
-
- 1
|
78
|
-
- 3
|
79
|
-
version: "1.3"
|
80
|
-
requirement: *id004
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 2.3.14
|
55
|
+
- !ruby/object:Gem::Dependency
|
81
56
|
name: rspec
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '1.3'
|
82
62
|
type: :development
|
83
|
-
- !ruby/object:Gem::Dependency
|
84
63
|
prerelease: false
|
85
|
-
version_requirements:
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '1.3'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: rake
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - "~>"
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: 10.5.0
|
96
76
|
type: :development
|
97
|
-
- !ruby/object:Gem::Dependency
|
98
77
|
prerelease: false
|
99
|
-
version_requirements:
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
name: rake
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: 10.5.0
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: sqlite3
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ">="
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
112
90
|
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ">="
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
113
97
|
description:
|
114
|
-
email:
|
98
|
+
email:
|
115
99
|
- andrew@prx.org
|
116
100
|
executables: []
|
117
|
-
|
118
101
|
extensions: []
|
119
|
-
|
120
102
|
extra_rdoc_files: []
|
121
|
-
|
122
|
-
|
123
|
-
- .
|
124
|
-
- .travis.yml
|
103
|
+
files:
|
104
|
+
- ".gitignore"
|
105
|
+
- ".travis.yml"
|
125
106
|
- Gemfile
|
126
107
|
- Rakefile
|
127
108
|
- generators/say_when_migration/say_when_migration_generator.rb
|
@@ -163,38 +144,27 @@ files:
|
|
163
144
|
- spec/support/models.rb
|
164
145
|
homepage: http://labs.prx.org
|
165
146
|
licenses: []
|
166
|
-
|
147
|
+
metadata: {}
|
167
148
|
post_install_message:
|
168
149
|
rdoc_options: []
|
169
|
-
|
170
|
-
require_paths:
|
150
|
+
require_paths:
|
171
151
|
- lib
|
172
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
173
|
-
|
174
|
-
requirements:
|
152
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
153
|
+
requirements:
|
175
154
|
- - ">="
|
176
|
-
- !ruby/object:Gem::Version
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
version: "0"
|
181
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
182
|
-
none: false
|
183
|
-
requirements:
|
155
|
+
- !ruby/object:Gem::Version
|
156
|
+
version: '0'
|
157
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
158
|
+
requirements:
|
184
159
|
- - ">="
|
185
|
-
- !ruby/object:Gem::Version
|
186
|
-
|
187
|
-
segments:
|
188
|
-
- 0
|
189
|
-
version: "0"
|
160
|
+
- !ruby/object:Gem::Version
|
161
|
+
version: '0'
|
190
162
|
requirements: []
|
191
|
-
|
192
|
-
rubyforge_project:
|
193
|
-
rubygems_version: 1.8.15
|
163
|
+
rubygems_version: 3.1.4
|
194
164
|
signing_key:
|
195
|
-
specification_version:
|
165
|
+
specification_version: 4
|
196
166
|
summary: Scheduling system for programmatically defined and stored jobs.
|
197
|
-
test_files:
|
167
|
+
test_files:
|
198
168
|
- spec/active_record_spec_helper.rb
|
199
169
|
- spec/db/schema.rb
|
200
170
|
- spec/say_when/cron_expression_spec.rb
|