taskinator 0.0.16 → 0.0.17
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +7 -0
- data/Gemfile.lock +1 -1
- data/Rakefile +3 -6
- data/bin/console +11 -0
- data/bin/setup +7 -0
- data/lib/taskinator/definition.rb +22 -1
- data/lib/taskinator/process.rb +8 -0
- data/lib/taskinator/task.rb +12 -0
- data/lib/taskinator/tasks.rb +5 -1
- data/lib/taskinator/version.rb +1 -1
- data/lib/taskinator.rb +9 -0
- metadata +7 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3936550148208b98dfaa2a841e97d322d14413b9
|
4
|
+
data.tar.gz: 92c8caa24c938962f8c5692dc5e45c9cfef012e2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 21b0b016cbdec925215d9a621c60859b2c8ff69cee341e350e0962b557b6b1b27338df3cf5b84a24c7858221461571f5710e7a44af14531f8e7d1ac6e5ce676f
|
7
|
+
data.tar.gz: ca89c615cc65798746ccbdcfdb14eca8ac0d5617f24359f1402bd7001e802a4ee6ddbc21cd43fece92971e76b5d22e421dd46c12a43e6090a0f8ea21267284d1
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,10 @@
|
|
1
|
+
v0.0.17 - 11 Jul 2015
|
2
|
+
---
|
3
|
+
Fixed issue with `Task#each` method, which was causing a Segmentation fault.
|
4
|
+
Added `define_sequential_process` and `define_concurrent_process` methods for defining processes.
|
5
|
+
Added `ConsoleInstrumenter` instrumenter implementation.
|
6
|
+
Required `resque` for console and rake tasks, to make debugging easier
|
7
|
+
|
1
8
|
v0.0.16 - 25 Jun 2015
|
2
9
|
---
|
3
10
|
Added ability to enqueue the creation of processes; added a new worker, `CreateProcessWorker`
|
data/Gemfile.lock
CHANGED
data/Rakefile
CHANGED
@@ -6,9 +6,6 @@ RSpec::Core::RakeTask.new(:spec)
|
|
6
6
|
task :test => :spec
|
7
7
|
task :default => :spec
|
8
8
|
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
# require_relative './spec/support/test_flow'
|
13
|
-
|
14
|
-
# require 'resque/tasks'
|
9
|
+
require 'resque'
|
10
|
+
require 'resque/tasks'
|
11
|
+
require 'taskinator'
|
data/bin/console
ADDED
@@ -0,0 +1,11 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require "bundler/setup"
|
4
|
+
require "resque"
|
5
|
+
require "taskinator"
|
6
|
+
|
7
|
+
# You can add fixtures and/or initialization code here to make experimenting
|
8
|
+
# with your gem easier. You can also use a different console, if you like.
|
9
|
+
|
10
|
+
require "pry"
|
11
|
+
Pry.start
|
data/bin/setup
ADDED
@@ -9,9 +9,30 @@ module Taskinator
|
|
9
9
|
UndefinedProcessError = ProcessUndefinedError
|
10
10
|
|
11
11
|
# defines a process
|
12
|
+
|
13
|
+
def define_sequential_process(*arg_list, &block)
|
14
|
+
factory = lambda {|definition, options|
|
15
|
+
Process.define_sequential_process_for(definition, options)
|
16
|
+
}
|
17
|
+
define_process(*arg_list + [factory], &block)
|
18
|
+
end
|
19
|
+
|
20
|
+
def define_concurrent_process(*arg_list, &block)
|
21
|
+
factory = lambda {|definition, options|
|
22
|
+
Process.define_concurrent_process_for(definition, options)
|
23
|
+
}
|
24
|
+
define_process(*arg_list + [factory], &block)
|
25
|
+
end
|
26
|
+
|
12
27
|
def define_process(*arg_list, &block)
|
13
28
|
raise ProcessAlreadyDefinedError if respond_to?(:_create_process_)
|
14
29
|
|
30
|
+
factory = arg_list.last.respond_to?(:call) ?
|
31
|
+
arg_list.pop :
|
32
|
+
lambda {|definition, options|
|
33
|
+
Process.define_sequential_process_for(definition, options)
|
34
|
+
}
|
35
|
+
|
15
36
|
define_singleton_method :_create_process_ do |args, options={}|
|
16
37
|
|
17
38
|
# TODO: better validation of arguments
|
@@ -20,7 +41,7 @@ module Taskinator
|
|
20
41
|
|
21
42
|
raise ArgumentError, "wrong number of arguments (#{args.length} for #{arg_list.length})" if args.length < arg_list.length
|
22
43
|
|
23
|
-
process =
|
44
|
+
process = factory.call(self, options)
|
24
45
|
|
25
46
|
# this may take long... up to users definition
|
26
47
|
Taskinator.instrumenter.instrument(:create_process, :uuid => process.uuid) do
|
data/lib/taskinator/process.rb
CHANGED
@@ -162,6 +162,10 @@ module Taskinator
|
|
162
162
|
# TODO: optimize this
|
163
163
|
tasks.all?(&:completed?)
|
164
164
|
end
|
165
|
+
|
166
|
+
def inspect
|
167
|
+
%(#<#{self.class.name}:0x#{self.__id__.to_s(16)} state=:#{current_state.name}, tasks=[#{tasks.inspect}]>)
|
168
|
+
end
|
165
169
|
end
|
166
170
|
|
167
171
|
class Concurrent < Process
|
@@ -199,6 +203,10 @@ module Taskinator
|
|
199
203
|
super
|
200
204
|
visitor.visit_attribute(:complete_on)
|
201
205
|
end
|
206
|
+
|
207
|
+
def inspect
|
208
|
+
%(#<#{self.class.name}:0x#{self.__id__.to_s(16)} state=:#{current_state.name}, complete_on=:#{complete_on}, tasks=[#{tasks.inspect}]>)
|
209
|
+
end
|
202
210
|
end
|
203
211
|
|
204
212
|
# reloads the process from storage
|
data/lib/taskinator/task.rb
CHANGED
@@ -166,6 +166,10 @@ module Taskinator
|
|
166
166
|
visitor.visit_attribute(:method)
|
167
167
|
visitor.visit_args(:args)
|
168
168
|
end
|
169
|
+
|
170
|
+
def inspect
|
171
|
+
%(#<#{self.class.name}:0x#{self.__id__.to_s(16)} method=:#{method}, state=:#{current_state.name}>)
|
172
|
+
end
|
169
173
|
end
|
170
174
|
|
171
175
|
# a task which invokes the specified background job
|
@@ -208,6 +212,10 @@ module Taskinator
|
|
208
212
|
visitor.visit_type(:job)
|
209
213
|
visitor.visit_args(:args)
|
210
214
|
end
|
215
|
+
|
216
|
+
def inspect
|
217
|
+
%(#<#{self.class.name}:0x#{self.__id__.to_s(16)} job=#{job}, state=:#{current_state.name}>)
|
218
|
+
end
|
211
219
|
end
|
212
220
|
|
213
221
|
# a task which delegates to another process
|
@@ -237,6 +245,10 @@ module Taskinator
|
|
237
245
|
super
|
238
246
|
visitor.visit_process(:sub_process)
|
239
247
|
end
|
248
|
+
|
249
|
+
def inspect
|
250
|
+
%(#<#{self.class.name}:0x#{self.__id__.to_s(16)} sub_process=#{sub_process.inspect}, state=:#{current_state.name}>)
|
251
|
+
end
|
240
252
|
end
|
241
253
|
|
242
254
|
# reloads the task from storage
|
data/lib/taskinator/tasks.rb
CHANGED
@@ -31,7 +31,7 @@ module Taskinator
|
|
31
31
|
@head.nil?
|
32
32
|
end
|
33
33
|
|
34
|
-
def each
|
34
|
+
def each(&block)
|
35
35
|
return to_enum(__method__) unless block_given?
|
36
36
|
|
37
37
|
current = @head
|
@@ -41,5 +41,9 @@ module Taskinator
|
|
41
41
|
end
|
42
42
|
end
|
43
43
|
|
44
|
+
def inspect
|
45
|
+
%(#<#{self.class.name}:0x#{self.__id__.to_s(16)} tasks=[#{collect(&:inspect).join(', ')}]>)
|
46
|
+
end
|
47
|
+
|
44
48
|
end
|
45
49
|
end
|
data/lib/taskinator/version.rb
CHANGED
data/lib/taskinator.rb
CHANGED
@@ -34,6 +34,7 @@ module Taskinator
|
|
34
34
|
LICENSE = 'See LICENSE.txt for licensing details.'
|
35
35
|
|
36
36
|
DEFAULTS = {
|
37
|
+
# none for now...
|
37
38
|
}
|
38
39
|
|
39
40
|
class << self
|
@@ -121,4 +122,12 @@ module Taskinator
|
|
121
122
|
end
|
122
123
|
end
|
123
124
|
|
125
|
+
class ConsoleInstrumenter
|
126
|
+
# just yield to the given block
|
127
|
+
def instrument(event, payload={})
|
128
|
+
puts [event.inspect, payload.to_yaml]
|
129
|
+
yield(payload) if block_given?
|
130
|
+
end
|
131
|
+
end
|
132
|
+
|
124
133
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: taskinator
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.17
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Chris Stefano
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-07-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: redis
|
@@ -237,7 +237,9 @@ dependencies:
|
|
237
237
|
description: Simple process orchestration
|
238
238
|
email:
|
239
239
|
- virtualstaticvoid@gmail.com
|
240
|
-
executables:
|
240
|
+
executables:
|
241
|
+
- console
|
242
|
+
- setup
|
241
243
|
extensions: []
|
242
244
|
extra_rdoc_files: []
|
243
245
|
files:
|
@@ -253,6 +255,8 @@ files:
|
|
253
255
|
- LICENSE.txt
|
254
256
|
- README.md
|
255
257
|
- Rakefile
|
258
|
+
- bin/console
|
259
|
+
- bin/setup
|
256
260
|
- lib/taskinator.rb
|
257
261
|
- lib/taskinator/api.rb
|
258
262
|
- lib/taskinator/complete_on.rb
|