proby 2.0.0 → 2.1.0
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/.gitignore +2 -1
- data/Gemfile.lock +5 -1
- data/HISTORY.md +9 -0
- data/README.md +8 -4
- data/lib/proby/resque_plugin.rb +3 -11
- data/lib/proby/version.rb +1 -1
- data/lib/proby.rb +22 -0
- data/proby.gemspec +1 -0
- data/test/notifier_test.rb +15 -0
- data/test/test_helper.rb +1 -0
- metadata +24 -7
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
proby (2.
|
4
|
+
proby (2.1.0)
|
5
5
|
chronic (~> 0.6.7)
|
6
6
|
httparty (~> 0.8.1)
|
7
7
|
multi_json (~> 1.2.0)
|
@@ -16,6 +16,9 @@ GEM
|
|
16
16
|
multi_json (~> 1.0)
|
17
17
|
multi_xml
|
18
18
|
json (1.6.6)
|
19
|
+
metaclass (0.0.1)
|
20
|
+
mocha (0.10.5)
|
21
|
+
metaclass (~> 0.0.1)
|
19
22
|
multi_json (1.2.0)
|
20
23
|
multi_xml (0.4.4)
|
21
24
|
rake (0.9.2.2)
|
@@ -30,6 +33,7 @@ DEPENDENCIES
|
|
30
33
|
bundler (>= 1.0.0)
|
31
34
|
fakeweb (~> 1.3.0)
|
32
35
|
json (~> 1.6.6)
|
36
|
+
mocha (~> 0.10.5)
|
33
37
|
proby!
|
34
38
|
rake (~> 0.9.0)
|
35
39
|
shoulda (~> 2.11.3)
|
data/HISTORY.md
ADDED
data/README.md
CHANGED
@@ -39,15 +39,19 @@ In addition, you can optionally give Proby a logger to use.
|
|
39
39
|
|
40
40
|
Sending Notifications
|
41
41
|
---------------------
|
42
|
-
|
42
|
+
The easiest way to have Proby monitor your task is by wrapping your code in a call to Proby's `monitor` function.
|
43
43
|
|
44
|
-
Proby.
|
44
|
+
Proby.monitor(task_api_id) do
|
45
|
+
# Do something here
|
46
|
+
end
|
45
47
|
|
46
|
-
|
48
|
+
You can also send the start and finish notifications manually via calls to `send_start_notification` and `send_finish_notification`.
|
47
49
|
|
50
|
+
Proby.send_start_notification(task_api_id)
|
51
|
+
# Do something here
|
48
52
|
Proby.send_finish_notification(task_api_id)
|
49
53
|
|
50
|
-
Specifying the `task_api_id` when calling the notification methods is optional. If it is not provided,
|
54
|
+
Specifying the `task_api_id` when calling any of the the notification methods is optional. If it is not provided,
|
51
55
|
Proby will use the value of the `PROBY_TASK_ID` environment variable. If no task id is specified
|
52
56
|
in the method call, and no value is set in the `PROBY_TASK_ID` environment variable, then no notification
|
53
57
|
will be sent.
|
data/lib/proby/resque_plugin.rb
CHANGED
@@ -47,18 +47,10 @@ module Proby
|
|
47
47
|
end
|
48
48
|
|
49
49
|
def around_perform_proby(*args)
|
50
|
-
failed = false
|
51
|
-
error_message = nil
|
52
50
|
_proby_id = proby_id(*args)
|
53
|
-
Proby.
|
54
|
-
|
55
|
-
|
56
|
-
failed = true
|
57
|
-
error_message = "#{e.class.name}: #{e.message}"
|
58
|
-
error_message << "\n#{e.backtrace.join("\n")}" if e.backtrace
|
59
|
-
raise e
|
60
|
-
ensure
|
61
|
-
Proby.send_finish_notification(_proby_id, :failed => failed, :error_message => error_message)
|
51
|
+
Proby.monitor(_proby_id) do
|
52
|
+
yield
|
53
|
+
end
|
62
54
|
end
|
63
55
|
end
|
64
56
|
end
|
data/lib/proby/version.rb
CHANGED
data/lib/proby.rb
CHANGED
@@ -70,6 +70,28 @@ module Proby
|
|
70
70
|
Notifier.send_notification('finish', proby_task_id, options)
|
71
71
|
end
|
72
72
|
|
73
|
+
# Surround the block of code with Proby start and finish notifications. If an exception
|
74
|
+
# is raised in the block of code, then the task will be marked as failed, and the
|
75
|
+
# exception's message and backtrace will be sent to Proby as the task's error message.
|
76
|
+
#
|
77
|
+
# @param [String] proby_task_id The id of the task to be notified. If nil, the
|
78
|
+
# value of the +PROBY_TASK_ID+ environment variable will be used.
|
79
|
+
def monitor(proby_task_id=nil)
|
80
|
+
failed = false
|
81
|
+
error_message = nil
|
82
|
+
begin
|
83
|
+
Proby.send_start_notification(proby_task_id)
|
84
|
+
yield
|
85
|
+
rescue Exception => e
|
86
|
+
failed = true
|
87
|
+
error_message = "#{e.class.name}: #{e.message}"
|
88
|
+
error_message << "\n#{e.backtrace.join("\n")}" if e.backtrace
|
89
|
+
raise e
|
90
|
+
ensure
|
91
|
+
Proby.send_finish_notification(proby_task_id, :failed => failed, :error_message => error_message)
|
92
|
+
end
|
93
|
+
end
|
94
|
+
|
73
95
|
end
|
74
96
|
end
|
75
97
|
|
data/proby.gemspec
CHANGED
@@ -25,6 +25,7 @@ Gem::Specification.new do |s|
|
|
25
25
|
s.add_development_dependency "yard", "~> 0.6.4"
|
26
26
|
s.add_development_dependency "bluecloth", "~> 2.1.0"
|
27
27
|
s.add_development_dependency "fakeweb", "~> 1.3.0"
|
28
|
+
s.add_development_dependency "mocha", "~> 0.10.5"
|
28
29
|
s.add_development_dependency "shoulda", "~> 2.11.3"
|
29
30
|
s.add_development_dependency "json", "~> 1.6.6"
|
30
31
|
|
data/test/notifier_test.rb
CHANGED
@@ -55,6 +55,21 @@ class NotifierTest < Test::Unit::TestCase
|
|
55
55
|
FakeWeb.register_uri(:post, Proby::ProbyHttpApi.base_uri + "/api/v1/tasks/iii999ooo222/finish.json", :status => ["200", "OK"])
|
56
56
|
assert_equal 200, Proby.send_finish_notification
|
57
57
|
end
|
58
|
+
|
59
|
+
should "send a start and finish notificaiton when using the monitor method" do
|
60
|
+
Proby.expects(:send_start_notification).with("abc123xyz456")
|
61
|
+
Proby.expects(:send_finish_notification).with() { |param1, param2| param1 == "abc123xyz456" && param2[:failed] == false && param2[:error_message].nil? }
|
62
|
+
assert_equal "foo", Proby.monitor("abc123xyz456") { "foo" }
|
63
|
+
end
|
64
|
+
|
65
|
+
should "include error information in the finish notification if the block passed to monitor raises an exception" do
|
66
|
+
Proby.expects(:send_start_notification).with("abc123xyz456")
|
67
|
+
Proby.expects(:send_finish_notification).with() { |param1, param2| param1 == "abc123xyz456" && param2[:failed] == true && param2[:error_message].include?("This is the error message") }
|
68
|
+
e = assert_raise Exception do
|
69
|
+
Proby.monitor("abc123xyz456") { raise Exception.new("This is the error message") }
|
70
|
+
end
|
71
|
+
assert_equal "This is the error message", e.message
|
72
|
+
end
|
58
73
|
end
|
59
74
|
|
60
75
|
end
|
data/test/test_helper.rb
CHANGED
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: proby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 11
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 2
|
8
|
+
- 1
|
8
9
|
- 0
|
9
|
-
|
10
|
-
version: 2.0.0
|
10
|
+
version: 2.1.0
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- John Wood
|
@@ -16,7 +16,7 @@ autorequire:
|
|
16
16
|
bindir: bin
|
17
17
|
cert_chain: []
|
18
18
|
|
19
|
-
date: 2012-04-
|
19
|
+
date: 2012-04-30 00:00:00 -05:00
|
20
20
|
default_executable:
|
21
21
|
dependencies:
|
22
22
|
- !ruby/object:Gem::Dependency
|
@@ -150,6 +150,22 @@ dependencies:
|
|
150
150
|
- !ruby/object:Gem::Dependency
|
151
151
|
prerelease: false
|
152
152
|
version_requirements: &id009 !ruby/object:Gem::Requirement
|
153
|
+
none: false
|
154
|
+
requirements:
|
155
|
+
- - ~>
|
156
|
+
- !ruby/object:Gem::Version
|
157
|
+
hash: 61
|
158
|
+
segments:
|
159
|
+
- 0
|
160
|
+
- 10
|
161
|
+
- 5
|
162
|
+
version: 0.10.5
|
163
|
+
type: :development
|
164
|
+
requirement: *id009
|
165
|
+
name: mocha
|
166
|
+
- !ruby/object:Gem::Dependency
|
167
|
+
prerelease: false
|
168
|
+
version_requirements: &id010 !ruby/object:Gem::Requirement
|
153
169
|
none: false
|
154
170
|
requirements:
|
155
171
|
- - ~>
|
@@ -161,11 +177,11 @@ dependencies:
|
|
161
177
|
- 3
|
162
178
|
version: 2.11.3
|
163
179
|
type: :development
|
164
|
-
requirement: *
|
180
|
+
requirement: *id010
|
165
181
|
name: shoulda
|
166
182
|
- !ruby/object:Gem::Dependency
|
167
183
|
prerelease: false
|
168
|
-
version_requirements: &
|
184
|
+
version_requirements: &id011 !ruby/object:Gem::Requirement
|
169
185
|
none: false
|
170
186
|
requirements:
|
171
187
|
- - ~>
|
@@ -177,7 +193,7 @@ dependencies:
|
|
177
193
|
- 6
|
178
194
|
version: 1.6.6
|
179
195
|
type: :development
|
180
|
-
requirement: *
|
196
|
+
requirement: *id011
|
181
197
|
name: json
|
182
198
|
description: A simple library for working with the Proby task monitoring application.
|
183
199
|
email:
|
@@ -193,6 +209,7 @@ files:
|
|
193
209
|
- .gitignore
|
194
210
|
- Gemfile
|
195
211
|
- Gemfile.lock
|
212
|
+
- HISTORY.md
|
196
213
|
- README.md
|
197
214
|
- Rakefile
|
198
215
|
- lib/proby.rb
|