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 CHANGED
@@ -1 +1 @@
1
- 0.4.0
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
- def initialize(engine = nil)
29
- @engine = engine || Pigeon::Engine.default_engine
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!(engine = nil, &callback)
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.0"
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-11-09}
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
- engine = Pigeon::Engine.new
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
- engine = Pigeon::Engine.new
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
- engine = Pigeon::Engine.new
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
- engine = Pigeon::Engine.new
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(engine)
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
- - 0
9
- version: 0.4.0
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-11-09 00:00:00 -05:00
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