run_every 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (2) hide show
  1. data/lib/run_every.rb +61 -0
  2. metadata +56 -0
@@ -0,0 +1,61 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ # file: run_every.rb
4
+
5
+ require 'xthreads'
6
+
7
+ class RunEvery
8
+
9
+ def initialize(opt={}, &blk)
10
+ if opt[:minutes] then
11
+ interval = opt[:minutes] * 60
12
+ elsif opt[:seconds] then
13
+ interval = opt[:seconds]
14
+ end
15
+ start_timer(interval, &blk)
16
+ end
17
+
18
+ class TimeUnit
19
+ def initialize(interval)
20
+ @interval = interval
21
+ end
22
+
23
+ def minutes
24
+ puts 'mins'
25
+ start_timer(@interval * 60, &blk)
26
+ end
27
+
28
+ def seconds(&blk)
29
+ puts 'seconds'
30
+ start_timer(@interval, &blk)
31
+ end
32
+
33
+ private
34
+
35
+ def start_timer(interval, &blk)
36
+ XThreads.new.create_loop('every', interval: interval, &blk).start
37
+ end
38
+ end
39
+
40
+ self.instance_eval do
41
+ def one() TimeUnit.new 1 end
42
+ def two() TimeUnit.new 2 end
43
+ def three() TimeUnit.new 3 end
44
+ def four() TimeUnit.new 4 end
45
+ def five() TimeUnit.new 5 end
46
+ def ten() TimeUnit.new 10 end
47
+ def fifteen() TimeUnit.new 15 end
48
+ def twenty() TimeUnit.new 20 end
49
+ def twentyfive() TimeUnit.new 20 end
50
+ def thirty() TimeUnit.new 30 end
51
+ def forty() TimeUnit.new 40 end
52
+ def fifty() TimeUnit.new 50 end
53
+ end
54
+
55
+ private
56
+
57
+ def start_timer(interval, &blk)
58
+ XThreads.new.create_loop('every', interval: interval, &blk).start
59
+ end
60
+
61
+ end
metadata ADDED
@@ -0,0 +1,56 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: run_every
3
+ version: !ruby/object:Gem::Version
4
+ prerelease:
5
+ version: 0.1.0
6
+ platform: ruby
7
+ authors: []
8
+
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+
13
+ date: 2011-04-03 00:00:00 +01:00
14
+ default_executable:
15
+ dependencies: []
16
+
17
+ description:
18
+ email:
19
+ executables: []
20
+
21
+ extensions: []
22
+
23
+ extra_rdoc_files: []
24
+
25
+ files:
26
+ - lib/run_every.rb
27
+ has_rdoc: true
28
+ homepage:
29
+ licenses: []
30
+
31
+ post_install_message:
32
+ rdoc_options: []
33
+
34
+ require_paths:
35
+ - lib
36
+ required_ruby_version: !ruby/object:Gem::Requirement
37
+ none: false
38
+ requirements:
39
+ - - ">="
40
+ - !ruby/object:Gem::Version
41
+ version: "0"
42
+ required_rubygems_version: !ruby/object:Gem::Requirement
43
+ none: false
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: "0"
48
+ requirements: []
49
+
50
+ rubyforge_project:
51
+ rubygems_version: 1.5.2
52
+ signing_key:
53
+ specification_version: 3
54
+ summary: run_every
55
+ test_files: []
56
+