kit 0.1.2 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/kit.rb +2 -3
- data/lib/kit/bit.rb +21 -4
- data/lib/kit/db_sqlite3.rb +14 -0
- metadata +3 -3
data/lib/kit.rb
CHANGED
@@ -37,7 +37,7 @@ class Kit
|
|
37
37
|
@@info = config[:info]
|
38
38
|
@@unique = config[:unique]
|
39
39
|
@@actions = config[:actions]
|
40
|
-
@@status_types = [ :pending, :completed, :
|
40
|
+
@@status_types = [ :pending, :completed, :failed, :running ]
|
41
41
|
@@db = Backend.new config[:db_config]
|
42
42
|
|
43
43
|
# Run initialization specific to the kit.
|
@@ -112,7 +112,7 @@ class Kit
|
|
112
112
|
fail NoAction, "#{action}" unless @@actions.include? action
|
113
113
|
@@db.insert_action action, options
|
114
114
|
rescue NoAction => ex
|
115
|
-
puts "Could not add task
|
115
|
+
puts "Could not add task, no such action: '#{ex.message}'."
|
116
116
|
end
|
117
117
|
end
|
118
118
|
|
@@ -133,7 +133,6 @@ class Kit
|
|
133
133
|
end
|
134
134
|
|
135
135
|
b.run_all
|
136
|
-
# TODO try and use blocks here to set status to running and then complete / failed as each task runs and finishes
|
137
136
|
end
|
138
137
|
end
|
139
138
|
|
data/lib/kit/bit.rb
CHANGED
@@ -15,6 +15,14 @@ class Bit < Kit
|
|
15
15
|
class MissingValues < RuntimeError
|
16
16
|
end
|
17
17
|
|
18
|
+
# Raised when an action runs but fails due to an invalid combination of options.
|
19
|
+
class InvalidAction < RuntimeError
|
20
|
+
end
|
21
|
+
|
22
|
+
# Raised when an action runs but encounters a fatal error.
|
23
|
+
class FailedAction < RuntimeError
|
24
|
+
end
|
25
|
+
|
18
26
|
attr_reader :id
|
19
27
|
|
20
28
|
# Loads all bit info from database, or attempts to add new bit to database.
|
@@ -135,14 +143,23 @@ class Bit < Kit
|
|
135
143
|
|
136
144
|
tasks.each do |t|
|
137
145
|
a = t[:action]
|
146
|
+
id = t[:rowid]
|
147
|
+
status[a] ||= {}
|
138
148
|
begin
|
149
|
+
@@db.update_action_status a, id, { :status => :running }
|
139
150
|
self.send a, t
|
140
|
-
|
141
|
-
|
142
|
-
|
151
|
+
stat = :complete
|
152
|
+
msg = nil
|
153
|
+
rescue InvalidAction, FailedAction => e
|
154
|
+
stat = :failed
|
155
|
+
msg = "#{e.class}: #{e.message}"
|
156
|
+
ensure
|
157
|
+
s = { :status => stat, :message => msg }
|
158
|
+
status[a].merge! ( { id => s } )
|
159
|
+
@@db.update_action_status a, id, s
|
143
160
|
end
|
144
|
-
status
|
145
161
|
end
|
162
|
+
status
|
146
163
|
end
|
147
164
|
|
148
165
|
# Finds bit ids that match given criteria.
|
data/lib/kit/db_sqlite3.rb
CHANGED
@@ -191,6 +191,20 @@ class Backend < Kit
|
|
191
191
|
@action_db.last_insert_row_id
|
192
192
|
end
|
193
193
|
|
194
|
+
# Updates the status of a task in an action table.
|
195
|
+
# @param [Symbol] table name of the action table
|
196
|
+
# @param [Integer] action rowid to update
|
197
|
+
# @param [Hash] data key / value pairs to set
|
198
|
+
def update_action_status table, id, data
|
199
|
+
data.merge! ( { :status => data[:status].to_s, :time => Time.now.to_i } )
|
200
|
+
set = []
|
201
|
+
data.each do |key, value|
|
202
|
+
set << "`#{key}` = '#{value}'"
|
203
|
+
end
|
204
|
+
|
205
|
+
@action_db.execute "UPDATE #{table} SET #{set.join ", "} WHERE `rowid` = '#{id}'"
|
206
|
+
end
|
207
|
+
|
194
208
|
# def delete_action_by_id action, id
|
195
209
|
# puts "DELETE FROM `#{action}` WHERE `rowid` = #{id}"
|
196
210
|
# end
|
metadata
CHANGED
@@ -4,9 +4,9 @@ version: !ruby/object:Gem::Version
|
|
4
4
|
prerelease: false
|
5
5
|
segments:
|
6
6
|
- 0
|
7
|
-
- 1
|
8
7
|
- 2
|
9
|
-
|
8
|
+
- 0
|
9
|
+
version: 0.2.0
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Evan Boyd Sosenko
|
@@ -14,7 +14,7 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2011-08-
|
17
|
+
date: 2011-08-07 00:00:00 -07:00
|
18
18
|
default_executable:
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|