pigeon 0.4.0 → 0.4.1

Sign up to get free protection for your applications and to get access to all the features.
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