sidetiq 0.1.2 → 0.1.3

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -2,6 +2,7 @@ Sidetiq
2
2
  =======
3
3
 
4
4
  [![Build Status](https://travis-ci.org/tobiassvn/sidetiq.png)](https://travis-ci.org/tobiassvn/sidetiq)
5
+ [![Dependency Status](https://gemnasium.com/tobiassvn/sidetiq.png)](https://gemnasium.com/tobiassvn/sidetiq)
5
6
 
6
7
  Recurring jobs for [Sidekiq](http://mperham.github.com/sidekiq/).
7
8
 
@@ -118,6 +119,16 @@ loaded by default, so it will have to be required manually:
118
119
  require 'sidetiq/web'
119
120
  ```
120
121
 
122
+ ### NOTES
123
+
124
+ By default Sidekiq uses a 15 second polling interval to check if scheduled
125
+ jobs are due. If a recurring job has to run more often than that you should
126
+ lower this value.
127
+
128
+ ```ruby
129
+ Sidekiq.options[:poll_interval] = 1
130
+ ```
131
+
121
132
  ### SCREENSHOT
122
133
 
123
134
  ![Screenshot](http://f.cl.ly/items/1P2u1v091F3V1n381g2I/Screen%20Shot%202013-02-01%20at%2012.16.17.png)
data/examples/simple.rb CHANGED
@@ -5,6 +5,10 @@ require 'sidetiq'
5
5
 
6
6
  Sidekiq.options[:poll_interval] = 1
7
7
 
8
+ Sidekiq.configure_server do |config|
9
+ Sidetiq::Clock.start!
10
+ end
11
+
8
12
  class MyWorker
9
13
  include Sidekiq::Worker
10
14
  include Sidetiq::Schedulable
data/lib/sidetiq.rb CHANGED
@@ -18,3 +18,7 @@ require 'sidetiq/schedule'
18
18
  require 'sidetiq/schedulable'
19
19
  require 'sidetiq/version'
20
20
 
21
+ # The Sidetiq namespace.
22
+ module Sidetiq
23
+ end
24
+
data/lib/sidetiq/clock.rb CHANGED
@@ -6,27 +6,52 @@ module Sidetiq
6
6
  config.utc = false
7
7
  end
8
8
 
9
+ # Public: The Sidetiq clock.
9
10
  class Clock
10
11
  include Singleton
11
12
  include MonitorMixin
12
13
 
14
+ # Public: Start time offset from epoch used for calculating run
15
+ # times in the Sidetiq schedules.
13
16
  START_TIME = Sidetiq.config.utc ? Time.utc(2010, 1, 1) : Time.local(2010, 1, 1)
14
17
 
15
- attr_reader :schedules, :thread
18
+ # Public: Returns a hash of Sidetiq::Schedule instances.
19
+ attr_reader :schedules
16
20
 
17
- def self.method_missing(meth, *args, &block)
21
+ # Public: Returns the clock thread.
22
+ attr_reader :thread
23
+
24
+ def self.method_missing(meth, *args, &block) # :nodoc:
18
25
  instance.__send__(meth, *args, &block)
19
26
  end
20
27
 
21
- def initialize
28
+ def initialize # :nodoc:
22
29
  super
23
30
  @schedules = {}
24
31
  end
25
32
 
33
+ # Public: Get the schedule for `worker`.
34
+ #
35
+ # worker - A Sidekiq::Worker class
36
+ #
37
+ # Examples
38
+ #
39
+ # schedule_for(MyWorker)
40
+ # # => Sidetiq::Schedule
41
+ #
42
+ # Returns a Sidetiq::Schedule instances.
26
43
  def schedule_for(worker)
27
44
  schedules[worker] ||= Sidetiq::Schedule.new(START_TIME)
28
45
  end
29
46
 
47
+ # Public: Issue a single clock tick.
48
+ #
49
+ # Examples
50
+ #
51
+ # tick
52
+ # # => Hash of Sidetiq::Schedule objects
53
+ #
54
+ # Returns a hash of Sidetiq::Schedule instances.
30
55
  def tick
31
56
  @tick = gettime
32
57
  synchronize do
@@ -38,10 +63,29 @@ module Sidetiq
38
63
  end
39
64
  end
40
65
 
66
+ # Public: Returns the current time used by the clock.
67
+ #
68
+ # Sidetiq::Clock uses `clock_gettime()` on UNIX systems and
69
+ # `mach_absolute_time()` on Mac OS X.
70
+ #
71
+ # Examples
72
+ #
73
+ # gettime
74
+ # # => 2013-02-04 12:00:45 +0000
75
+ #
76
+ # Returns a Time instance.
41
77
  def gettime
42
78
  Sidetiq.config.utc ? clock_gettime.utc : clock_gettime
43
79
  end
44
80
 
81
+ # Public: Starts the clock unless it is already running.
82
+ #
83
+ # Examples
84
+ #
85
+ # start!
86
+ # # => Thread
87
+ #
88
+ # Returns the Thread instance of the clock thread.
45
89
  def start!
46
90
  return if ticking?
47
91
 
@@ -49,8 +93,17 @@ module Sidetiq
49
93
  @thread = Thread.start { clock { tick } }
50
94
  @thread.abort_on_exception = true
51
95
  @thread.priority = Sidetiq.config.resolution
96
+ @thread
52
97
  end
53
98
 
99
+ # Public: Stops the clock if it is running.
100
+ #
101
+ # Examples
102
+ #
103
+ # stop!
104
+ # # => nil
105
+ #
106
+ # Returns nil.
54
107
  def stop!
55
108
  if ticking?
56
109
  @thread.kill
@@ -58,6 +111,18 @@ module Sidetiq
58
111
  end
59
112
  end
60
113
 
114
+ # Public: Returns the status of the clock.
115
+ #
116
+ # Examples
117
+ #
118
+ # ticking?
119
+ # # => false
120
+ #
121
+ # start!
122
+ # ticking?
123
+ # # => true
124
+ #
125
+ # Returns true or false.
61
126
  def ticking?
62
127
  @thread && @thread.alive?
63
128
  end
@@ -1,11 +1,23 @@
1
1
  module Sidetiq
2
2
  class << self
3
+ # Public: Sets the configuration used by Sidetiq.
3
4
  attr_writer :config
4
5
 
6
+ # Public: Configuration wrapper for block configurations.
7
+ #
8
+ # Examples
9
+ #
10
+ # Sidetiq.configure do |config|
11
+ # config.resolution = 0.2
12
+ # end
13
+ #
14
+ # Yields the configuration OpenStruct currently set.
15
+ # Returns nothing.
5
16
  def configure
6
17
  yield config
7
18
  end
8
19
 
20
+ # Public: Returns the current configuration used by Sidetiq.
9
21
  def config
10
22
  @config ||= OpenStruct.new
11
23
  end
@@ -1,7 +1,18 @@
1
1
  module Sidetiq
2
+ # Public: Mixin for Sidekiq::Worker classes.
3
+ #
4
+ # Examples
5
+ #
6
+ # class MyWorker
7
+ # include Sidekiq::Worker
8
+ # include Sidetiq::Schedulable
9
+ #
10
+ # # Daily at midnight
11
+ # tiq { daily }
12
+ # end
2
13
  module Schedulable
3
14
  module ClassMethods
4
- def tiq(&block)
15
+ def tiq(&block) # :nodoc:
5
16
  clock = Sidetiq::Clock.instance
6
17
  clock.synchronize do
7
18
  clock.schedule_for(self).instance_eval(&block)
@@ -9,7 +20,7 @@ module Sidetiq
9
20
  end
10
21
  end
11
22
 
12
- def self.included(klass)
23
+ def self.included(klass) # :nodoc:
13
24
  klass.extend(Sidetiq::Schedulable::ClassMethods)
14
25
  end
15
26
  end
@@ -1,4 +1,5 @@
1
1
  module Sidetiq
2
+ # Internal: Recurrence schedules.
2
3
  class Schedule < IceCube::Schedule
3
4
  def method_missing(meth, *args, &block)
4
5
  if IceCube::Rule.respond_to?(meth)
@@ -1,9 +1,16 @@
1
1
  module Sidetiq
2
+ # Public: Sidetiq version namespace.
2
3
  module VERSION
4
+ # Public: Sidetiq major version number.
3
5
  MAJOR = 0
6
+
7
+ # Public: Sidetiq minor version number.
4
8
  MINOR = 1
5
- PATCH = 2
6
9
 
10
+ # Public: Sidetiq patch level.
11
+ PATCH = 3
12
+
13
+ # Public: String representation of the current Sidetiq version.
7
14
  STRING = [MAJOR, MINOR, PATCH].compact.join('.')
8
15
  end
9
16
  end
data/lib/sidetiq/web.rb CHANGED
@@ -2,7 +2,6 @@ require 'sidekiq/web'
2
2
 
3
3
  module Sidetiq
4
4
  module Web
5
-
6
5
  def self.registered(app)
7
6
  app.helpers do
8
7
  def find_template(view, *args, &block)
data/sidetiq.gemspec CHANGED
@@ -19,6 +19,6 @@ Gem::Specification.new do |gem|
19
19
  gem.require_paths = ["lib"]
20
20
  gem.extensions = ['ext/sidetiq_ext/extconf.rb']
21
21
 
22
- gem.add_dependency 'sidekiq'
23
- gem.add_dependency 'ice_cube'
22
+ gem.add_dependency 'sidekiq', '~> 2.7.0'
23
+ gem.add_dependency 'ice_cube', '~> 0.9.3'
24
24
  end
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: sidetiq
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.1.2
5
+ version: 0.1.3
6
6
  platform: ruby
7
7
  authors:
8
8
  - Tobias Svensson
@@ -14,34 +14,34 @@ dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  version_requirements: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ! '>='
17
+ - - ~>
18
18
  - !ruby/object:Gem::Version
19
- version: '0'
19
+ version: 2.7.0
20
20
  none: false
21
21
  name: sidekiq
22
22
  type: :runtime
23
23
  prerelease: false
24
24
  requirement: !ruby/object:Gem::Requirement
25
25
  requirements:
26
- - - ! '>='
26
+ - - ~>
27
27
  - !ruby/object:Gem::Version
28
- version: '0'
28
+ version: 2.7.0
29
29
  none: false
30
30
  - !ruby/object:Gem::Dependency
31
31
  version_requirements: !ruby/object:Gem::Requirement
32
32
  requirements:
33
- - - ! '>='
33
+ - - ~>
34
34
  - !ruby/object:Gem::Version
35
- version: '0'
35
+ version: 0.9.3
36
36
  none: false
37
37
  name: ice_cube
38
38
  type: :runtime
39
39
  prerelease: false
40
40
  requirement: !ruby/object:Gem::Requirement
41
41
  requirements:
42
- - - ! '>='
42
+ - - ~>
43
43
  - !ruby/object:Gem::Version
44
- version: '0'
44
+ version: 0.9.3
45
45
  none: false
46
46
  description: High-resolution job scheduler for Sidekiq
47
47
  email: