pigeon 0.4.0 → 0.4.1
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.
- data/VERSION +1 -1
- data/lib/pigeon/task.rb +10 -5
- data/pigeon.gemspec +2 -2
- data/test/unit/pigeon_task_test.rb +33 -15
- metadata +3 -3
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.4.
|
1
|
+
0.4.1
|
data/lib/pigeon/task.rb
CHANGED
@@ -4,6 +4,7 @@ class Pigeon::Task
|
|
4
4
|
# == Properties ===========================================================
|
5
5
|
|
6
6
|
attr_reader :state
|
7
|
+
attr_reader :options
|
7
8
|
attr_reader :engine
|
8
9
|
attr_reader :exception
|
9
10
|
attr_reader :created_at
|
@@ -25,8 +26,13 @@ class Pigeon::Task
|
|
25
26
|
|
26
27
|
# == Instance Methods =====================================================
|
27
28
|
|
28
|
-
|
29
|
-
|
29
|
+
# Creates a new instance of a Task with a series of options.
|
30
|
+
# * :engine => Engine
|
31
|
+
# Other options can be specified which will persist in the options
|
32
|
+
# accessor.
|
33
|
+
def initialize(options = nil)
|
34
|
+
@options = options ? options.dup : { }
|
35
|
+
@engine = @options.delete(:engine) || Pigeon::Engine.default_engine
|
30
36
|
@created_at = Time.now
|
31
37
|
|
32
38
|
after_initialized
|
@@ -34,11 +40,10 @@ class Pigeon::Task
|
|
34
40
|
|
35
41
|
# Kicks off the task. An optional callback is executed just before each
|
36
42
|
# state is excuted and is passed the state name as a symbol.
|
37
|
-
def run!(
|
38
|
-
@engine = engine if (engine)
|
43
|
+
def run!(initial_state = nil, &callback)
|
39
44
|
@callback = callback if (block_given?)
|
40
45
|
|
41
|
-
@state = self.class.initial_state
|
46
|
+
@state = initial_state || self.class.initial_state
|
42
47
|
@started_at = Time.now
|
43
48
|
|
44
49
|
run_state!(@state)
|
data/pigeon.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{pigeon}
|
8
|
-
s.version = "0.4.
|
8
|
+
s.version = "0.4.1"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["tadman"]
|
12
|
-
s.date = %q{2010-
|
12
|
+
s.date = %q{2010-12-14}
|
13
13
|
s.default_executable = %q{launcher.example}
|
14
14
|
s.description = %q{Pigeon is a simple way to get started building an EventMachine engine that's intended to run as a background job.}
|
15
15
|
s.email = %q{github@tadman.ca}
|
@@ -44,10 +44,18 @@ class FailingTask < Pigeon::Task
|
|
44
44
|
end
|
45
45
|
|
46
46
|
class PigeonTaskTest < Test::Unit::TestCase
|
47
|
+
def setup
|
48
|
+
@engine = Pigeon::Engine.new
|
49
|
+
|
50
|
+
Pigeon::Engine.register_engine(@engine)
|
51
|
+
end
|
52
|
+
|
53
|
+
def teardown
|
54
|
+
Pigeon::Engine.unregister_engine(@engine)
|
55
|
+
end
|
56
|
+
|
47
57
|
def test_empty_task
|
48
|
-
|
49
|
-
|
50
|
-
task = Pigeon::Task.new(engine)
|
58
|
+
task = Pigeon::Task.new
|
51
59
|
|
52
60
|
reported = 0
|
53
61
|
|
@@ -64,13 +72,18 @@ class PigeonTaskTest < Test::Unit::TestCase
|
|
64
72
|
|
65
73
|
assert_equal nil, task.exception
|
66
74
|
|
75
|
+
assert_equal @engine.object_id, task.engine.object_id
|
76
|
+
end
|
77
|
+
|
78
|
+
def test_alternate_engine
|
79
|
+
engine = Pigeon::Engine.new
|
80
|
+
task = Pigeon::Task.new(:engine => engine)
|
81
|
+
|
67
82
|
assert_equal engine.object_id, task.engine.object_id
|
68
83
|
end
|
69
84
|
|
70
85
|
def test_example_task
|
71
|
-
|
72
|
-
|
73
|
-
task = ExampleTask.new(engine)
|
86
|
+
task = ExampleTask.new
|
74
87
|
|
75
88
|
callbacks = [ ]
|
76
89
|
|
@@ -112,9 +125,7 @@ class PigeonTaskTest < Test::Unit::TestCase
|
|
112
125
|
end
|
113
126
|
|
114
127
|
def test_failing_task
|
115
|
-
|
116
|
-
|
117
|
-
task = FailingTask.new(engine)
|
128
|
+
task = FailingTask.new
|
118
129
|
|
119
130
|
reported = false
|
120
131
|
|
@@ -128,11 +139,20 @@ class PigeonTaskTest < Test::Unit::TestCase
|
|
128
139
|
|
129
140
|
assert task.exception?
|
130
141
|
end
|
142
|
+
|
143
|
+
def test_arbitrary_options
|
144
|
+
options = {
|
145
|
+
:example => 'example1',
|
146
|
+
:optional => 1
|
147
|
+
}.freeze
|
148
|
+
|
149
|
+
task = Pigeon::Task.new(options)
|
150
|
+
|
151
|
+
assert_equal options, task.options
|
152
|
+
end
|
131
153
|
|
132
154
|
def test_block_notification
|
133
|
-
|
134
|
-
|
135
|
-
task = Pigeon::Task.new(engine)
|
155
|
+
task = Pigeon::Task.new
|
136
156
|
|
137
157
|
states_triggered = [ ]
|
138
158
|
|
@@ -148,10 +168,8 @@ class PigeonTaskTest < Test::Unit::TestCase
|
|
148
168
|
end
|
149
169
|
|
150
170
|
def test_priority_order
|
151
|
-
engine = Pigeon::Engine.new
|
152
|
-
|
153
171
|
tasks = (0..10).collect do
|
154
|
-
task = Pigeon::Task.new
|
172
|
+
task = Pigeon::Task.new
|
155
173
|
|
156
174
|
# Trigger generation of default priority value
|
157
175
|
task.priority
|
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 0
|
7
7
|
- 4
|
8
|
-
-
|
9
|
-
version: 0.4.
|
8
|
+
- 1
|
9
|
+
version: 0.4.1
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- tadman
|
@@ -14,7 +14,7 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2010-
|
17
|
+
date: 2010-12-14 00:00:00 -05:00
|
18
18
|
default_executable: launcher.example
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|