simple_schedule 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. checksums.yaml +7 -0
  2. data/lib/simple_schedule.rb +47 -0
  3. metadata +58 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: bb24834ed63f130da77c0715b7b71e2032ec26be215113530a1f0b1380a1625a
4
+ data.tar.gz: 6d133504786a0eb8122fb6b2632965198ffc817827113e60c656e32d4a30da77
5
+ SHA512:
6
+ metadata.gz: a4ea825ddd213d20878a9fb3e9a185aed92b3b1d894ae12e75816dfeb6e307b87f427d9433ebcac5658f268655f69c4afb621dafa71fe0e74cb1f3dfba5fb97a
7
+ data.tar.gz: ce95fe8f3a7e8b4d0bb63b43308c3f7be7909f3536f28690671f7f46dc52712c1980a833d4bc8ae8051819ab67eed4ec642bd3f12cd83ba19599176cecca26e6
@@ -0,0 +1,47 @@
1
+ require 'rufus-scheduler'
2
+
3
+ module SimpleSchedule
4
+ def run
5
+ scheduler = Rufus::Scheduler.new
6
+
7
+ jobs.each do |type, schedule, job|
8
+ if job.respond_to?(:perform_async)
9
+ scheduler.public_send(type, schedule) { job.perform_async }
10
+ elsif job.respond_to?(:perform)
11
+ scheduler.public_send(type, schedule) { job.perform }
12
+ elsif job.instance_methods.include?(:perform)
13
+ scheduler.public_send(type, schedule) { job.new.perform }
14
+ else
15
+ raise ArgumentError.new("Job #{job} does not respond to #{job}.perform_async, #{job}.perform, or #{job}#perform")
16
+ end
17
+ end
18
+
19
+ scheduler.join
20
+ end
21
+
22
+ private
23
+
24
+ def jobs
25
+ @jobs ||= []
26
+ end
27
+
28
+ def once_in(interval, job)
29
+ jobs << [:in, interval, job]
30
+ end
31
+
32
+ def once_at(time, job)
33
+ jobs << [:at, time, job]
34
+ end
35
+
36
+ def every(interval, job)
37
+ jobs << [:every, interval, job]
38
+ end
39
+
40
+ def interval(interval, job)
41
+ jobs << [:interval, interval, job]
42
+ end
43
+
44
+ def cron(tab, job)
45
+ jobs << [:cron, tab, job]
46
+ end
47
+ end
metadata ADDED
@@ -0,0 +1,58 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: simple_schedule
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - James Riley
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2018-04-21 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rufus-scheduler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: 3.0.0
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: 3.0.0
27
+ description: A simple scheduler for jobs built around rufus_scheduler
28
+ email: jriley@jamespriley.com
29
+ executables: []
30
+ extensions: []
31
+ extra_rdoc_files: []
32
+ files:
33
+ - lib/simple_schedule.rb
34
+ homepage: https://github.com/thalagyrt/simple_schedule
35
+ licenses:
36
+ - MIT
37
+ metadata: {}
38
+ post_install_message:
39
+ rdoc_options: []
40
+ require_paths:
41
+ - lib
42
+ required_ruby_version: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - ">="
45
+ - !ruby/object:Gem::Version
46
+ version: '0'
47
+ required_rubygems_version: !ruby/object:Gem::Requirement
48
+ requirements:
49
+ - - ">="
50
+ - !ruby/object:Gem::Version
51
+ version: '0'
52
+ requirements: []
53
+ rubyforge_project:
54
+ rubygems_version: 2.7.6
55
+ signing_key:
56
+ specification_version: 4
57
+ summary: A simple scheduler for jobs
58
+ test_files: []