time_scheduler 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,12 @@
1
+
2
+ require "time_scheduler"
3
+
4
+ Scheduler = TimeScheduler.new
5
+
6
+ goal = Time.now + 3
7
+ Scheduler.wait( :foo, sec: "*" ) do |time|
8
+ p Time.now.iso8601(3)
9
+ Scheduler.cancel( :foo ) if time > goal
10
+ end
11
+ sleep 5
12
+
@@ -0,0 +1,10 @@
1
+ require "time_scheduler"
2
+
3
+ Scheduler = TimeScheduler.new
4
+
5
+ Scheduler.wait( sec: "*" ) do |time|
6
+ p Time.now.iso8601(3)
7
+ end
8
+
9
+ sleep 5
10
+
@@ -0,0 +1,14 @@
1
+ require "time_scheduler"
2
+
3
+ Scheduler = TimeScheduler.new
4
+
5
+ class Sample
6
+ Scheduler.wait( sec: "*" ) do |time|
7
+ p Time.now.iso8601(3)
8
+ end
9
+ end
10
+
11
+ sample = Sample.new
12
+
13
+ sleep 5
14
+
@@ -0,0 +1,25 @@
1
+ require "time_scheduler"
2
+
3
+ Scheduler = TimeScheduler.new
4
+
5
+ class Sample
6
+ def initialize
7
+ Scheduler.wait( :cyclic, sec: "*" ) do |time|
8
+ p Time.now.iso8601(3)
9
+ end
10
+ end
11
+
12
+ def stop
13
+ p :stop
14
+ Scheduler.cancel( :cyclic )
15
+ end
16
+ end
17
+
18
+ sample = Sample.new
19
+
20
+ sleep 3
21
+
22
+ sample.stop
23
+
24
+ sleep 3
25
+
@@ -0,0 +1,24 @@
1
+ require "time_scheduler"
2
+
3
+ Scheduler = TimeScheduler.new
4
+
5
+ Signal.trap( :INT ) do
6
+ exit
7
+ end
8
+
9
+ Scheduler.wait sec: "*/5" do |time|
10
+ p [Time.now.iso8601(3), :sec5]
11
+ end
12
+
13
+ Scheduler.wait cron: "* * * * *" do |time|
14
+ p [Time.now.iso8601(3), :cron]
15
+ end
16
+
17
+ Scheduler.wait at: (Time.now + 60) do |time|
18
+ p [Time.now.iso8601(3), :quit]
19
+ exit
20
+ end
21
+
22
+ p [Time.now.iso8601(3), :ready]
23
+ sleep
24
+
@@ -0,0 +1,20 @@
1
+ require "time_scheduler"
2
+
3
+ Scheduler = TimeScheduler.new
4
+
5
+ check = {
6
+ sec: "*"
7
+ }
8
+
9
+ goal = Time.now + 3
10
+ Scheduler.wait( **check ) do |time|
11
+ p [time.iso8601(3), :cyclic]
12
+ if time > goal
13
+ p [time.iso8601(3), :quit]
14
+ exit
15
+ end
16
+ end
17
+
18
+ p [Time.now.iso8601(3), :ready]
19
+ sleep
20
+
@@ -0,0 +1,27 @@
1
+ require "time_scheduler"
2
+
3
+ Scheduler = TimeScheduler.new
4
+
5
+ cyclic1 = {
6
+ msec: "*/100"
7
+ }
8
+ cyclic2 = {
9
+ sec: "*/2"
10
+ }
11
+
12
+ Scheduler.wait( **cyclic1 ) do |time|
13
+ p [time.iso8601(3), :cyclic1]
14
+ end
15
+
16
+ goal = Time.now + 5
17
+ Scheduler.wait( **cyclic2 ) do |time|
18
+ p [time.iso8601(3), :cyclic2]
19
+ if time > goal
20
+ p [time.iso8601(3), :quit]
21
+ exit
22
+ end
23
+ end
24
+
25
+ p [Time.now.iso8601(3), :ready]
26
+ sleep
27
+
@@ -0,0 +1,29 @@
1
+ require "time_scheduler"
2
+
3
+ Scheduler = TimeScheduler.new
4
+
5
+ cyclic = {
6
+ sec: '*',
7
+ }
8
+ onetime = {
9
+ sec: '*/5',
10
+ }
11
+
12
+ count = 0
13
+ Scheduler.wait( **cyclic ) do |time|
14
+ p [time.iso8601(3), :cyclic]
15
+ count += 1
16
+ if count >= 15
17
+ p [time.iso8601(3), :quit]
18
+ exit
19
+ end
20
+ end
21
+
22
+ Scheduler.wait( :onetime, **onetime ) do |time|
23
+ p [time.iso8601(3), :onetime]
24
+ Scheduler.cancel( :onetime )
25
+ end
26
+
27
+ p [Time.now.iso8601(3), :ready]
28
+ sleep
29
+
@@ -0,0 +1,31 @@
1
+ require "time_scheduler"
2
+
3
+ Scheduler = TimeScheduler.new
4
+
5
+ cyclic = {
6
+ sec: '*'
7
+ }
8
+
9
+ goal = Time.now + 60
10
+
11
+ Scheduler.wait( :tick, **cyclic ) do |time|
12
+ case time.sec
13
+ when 0, 20, 40
14
+ p [time.iso8601(3), :tick_1, '*']
15
+ Scheduler.wait( :tick, sec: '*' )
16
+ when 10, 30, 50
17
+ p [time.iso8601(3), :tick_2, '*/2']
18
+ Scheduler.wait( :tick, sec: '*/2' )
19
+ else
20
+ p [time.iso8601(3), :tick]
21
+ end
22
+
23
+ if time > goal
24
+ p [time.iso8601(3), :quit]
25
+ exit
26
+ end
27
+ end
28
+
29
+ p [Time.now.iso8601(3), :ready]
30
+ sleep
31
+
@@ -0,0 +1,17 @@
1
+ require "time_scheduler"
2
+
3
+ Scheduler = TimeScheduler.new
4
+
5
+ count = 0
6
+ Scheduler.wait( sec: '*' ) do |time|
7
+ count += 1
8
+ p [time.iso8601(3), :cyclic, count]
9
+ if count >= 10
10
+ p [time.iso8601(3), :quit]
11
+ exit
12
+ end
13
+ end
14
+
15
+ p [Time.now.iso8601(3), :ready]
16
+ sleep
17
+
@@ -0,0 +1,24 @@
1
+ require "time_scheduler"
2
+
3
+ Scheduler = TimeScheduler.new
4
+
5
+ Scheduler.wait( sec: '*/2', nice: 1 ) do |time|
6
+ p [time.iso8601(3), :every, :A]
7
+ end
8
+
9
+ Scheduler.wait( sec: '*/3', nice: 2 ) do |time|
10
+ p [time.iso8601(3), :every, :B]
11
+ end
12
+
13
+ Scheduler.wait( sec: '*/4', nice: 3 ) do |time|
14
+ p [time.iso8601(3), :every, :C]
15
+ end
16
+
17
+ Scheduler.wait( at: Time.now + 30, nice: 4 ) do |time|
18
+ p [time.iso8601(3), :quit]
19
+ exit
20
+ end
21
+
22
+ p [Time.now.iso8601(3), :ready]
23
+ sleep
24
+
@@ -0,0 +1,21 @@
1
+ require "time_scheduler"
2
+
3
+ Scheduler = TimeScheduler.new
4
+
5
+ Scheduler.wait( :a, sec: '*', nice: 1 ) do |time|
6
+ p [time.iso8601(3), :every]
7
+ end
8
+
9
+ Scheduler.wait( :b, sec: '*/5', nice: 2 ) do |time|
10
+ p [time.iso8601(3), :once]
11
+ Scheduler.cancel( :b )
12
+ end
13
+
14
+ Scheduler.wait( :c, sec: '*/10', nice: 3 ) do |time|
15
+ p [time.iso8601(3), :quit]
16
+ exit
17
+ end
18
+
19
+ p [Time.now.iso8601(3), :ready]
20
+ sleep
21
+
@@ -0,0 +1,25 @@
1
+ require "time_scheduler"
2
+
3
+ Scheduler = TimeScheduler.new
4
+
5
+ Scheduler.wait( :A, sec: '*/5', nice: 1 ) do |time|
6
+ p [time.iso8601(3), :every, :A]
7
+ end
8
+
9
+ Scheduler.wait( :B, sec: '*/10', nice: 2 ) do |time|
10
+ p [time.iso8601(3), :every, :B]
11
+ end
12
+
13
+ Scheduler.wait( :C, sec: 30, nice: 3 ) do |time|
14
+ p [time.iso8601(3), :once, :C]
15
+ Scheduler.cancel( :A )
16
+ end
17
+
18
+ Scheduler.wait( :D, sec: 0, nice: 4 ) do |time|
19
+ p [time.iso8601(3), :once, :D]
20
+ exit
21
+ end
22
+
23
+ p [Time.now.iso8601(3), :ready]
24
+ sleep
25
+
@@ -0,0 +1,21 @@
1
+ require "time_scheduler"
2
+
3
+ Scheduler = TimeScheduler.new
4
+
5
+ Scheduler.wait( :tick, msec: '*/10' ) do |time|
6
+ p [time.iso8601(3), :tick]
7
+ end
8
+
9
+ Scheduler.wait( :stop, at: Time.now + 1 ) do |time|
10
+ p [time.iso8601(3), :stop]
11
+ Scheduler.cancel( :tick )
12
+ end
13
+
14
+ Scheduler.wait( :quit, at: Time.now + 2 ) do |time|
15
+ p [time.iso8601(3), :quit]
16
+ exit
17
+ end
18
+
19
+ p [Time.now.iso8601(3), :ready]
20
+ sleep
21
+
@@ -0,0 +1,36 @@
1
+ require "time_scheduler"
2
+
3
+ Scheduler = TimeScheduler.new
4
+
5
+ cyclic = {
6
+ sec: "*"
7
+ }
8
+ quit = {
9
+ sec: "*/20"
10
+ }
11
+
12
+ Scheduler.wait( **cyclic ) do |time|
13
+ p [time.iso8601(3), :cyclic]
14
+ end
15
+
16
+ Scheduler.wait( **quit ) do |time|
17
+ p [time.iso8601(3), :quit]
18
+ exit
19
+ end
20
+
21
+ while true
22
+ sleep 3
23
+ time = Time.now
24
+ p [time.iso8601(3), :toggle]
25
+
26
+ bool = Scheduler.active?
27
+ p [:active?, bool]
28
+ if bool
29
+ p :suspend
30
+ Scheduler.suspend
31
+ else
32
+ p :resume
33
+ Scheduler.resume
34
+ end
35
+ end
36
+
@@ -0,0 +1,28 @@
1
+ lib = File.expand_path("lib", __dir__)
2
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
+ require "time_scheduler/version"
4
+
5
+ Gem::Specification.new do |spec|
6
+ spec.name = "time_scheduler"
7
+ spec.version = TimeScheduler::VERSION
8
+ spec.authors = ["arimay"]
9
+ spec.email = ["arima.yasuhiro@gmail.com"]
10
+
11
+ spec.summary = %q{ Library for simple event scheduler. }
12
+ spec.description = %q{ TimeScheduler is yet another library for single/periodical event scheduler. }
13
+ spec.homepage = "https://github.com/arimay/time_scheduler"
14
+
15
+ # Specify which files should be added to the gem when it is released.
16
+ # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
17
+ spec.files = Dir.chdir(File.expand_path('..', __FILE__)) do
18
+ `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
19
+ end
20
+ spec.bindir = "exe"
21
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
22
+ spec.require_paths = ["lib"]
23
+
24
+ spec.add_dependency "time_cursor"
25
+
26
+ spec.add_development_dependency "rake", "~> 12.0"
27
+ spec.add_development_dependency "rspec", "~> 3.0"
28
+ end
metadata ADDED
@@ -0,0 +1,114 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: time_scheduler
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ platform: ruby
6
+ authors:
7
+ - arimay
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2020-08-18 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: time_cursor
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '12.0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '12.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '3.0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '3.0'
55
+ description: " TimeScheduler is yet another library for single/periodical event scheduler. "
56
+ email:
57
+ - arima.yasuhiro@gmail.com
58
+ executables: []
59
+ extensions: []
60
+ extra_rdoc_files: []
61
+ files:
62
+ - ".gitignore"
63
+ - ".rspec"
64
+ - ".travis.yml"
65
+ - Gemfile
66
+ - README.adoc
67
+ - README.ja.adoc
68
+ - Rakefile
69
+ - bin/console
70
+ - bin/setup
71
+ - lib/time_scheduler.rb
72
+ - lib/time_scheduler/event.rb
73
+ - lib/time_scheduler/scheduler.rb
74
+ - lib/time_scheduler/version.rb
75
+ - sample/base_1.rb
76
+ - sample/base_2.rb
77
+ - sample/base_3.rb
78
+ - sample/base_4.rb
79
+ - sample/base_5.rb
80
+ - sample/base_6.rb
81
+ - sample/base_7.rb
82
+ - sample/base_8.rb
83
+ - sample/base_9.rb
84
+ - sample/base_a.rb
85
+ - sample/base_b.rb
86
+ - sample/base_c.rb
87
+ - sample/base_d.rb
88
+ - sample/base_e.rb
89
+ - sample/base_f.rb
90
+ - sample/base_g.rb
91
+ - time_scheduler.gemspec
92
+ homepage: https://github.com/arimay/time_scheduler
93
+ licenses: []
94
+ metadata: {}
95
+ post_install_message:
96
+ rdoc_options: []
97
+ require_paths:
98
+ - lib
99
+ required_ruby_version: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ required_rubygems_version: !ruby/object:Gem::Requirement
105
+ requirements:
106
+ - - ">="
107
+ - !ruby/object:Gem::Version
108
+ version: '0'
109
+ requirements: []
110
+ rubygems_version: 3.1.4
111
+ signing_key:
112
+ specification_version: 4
113
+ summary: Library for simple event scheduler.
114
+ test_files: []