pipeline_toolkit 1.3.0 → 1.4.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/README.markdown +2 -2
- data/lib/pipeline_toolkit/handlers/message_handler.rb +1 -1
- data/lib/pipeline_toolkit/message_coder.rb +13 -5
- data/lib/pipeline_toolkit/message_command.rb +1 -1
- data/lib/pipeline_toolkit/message_pusher.rb +3 -1
- data/lib/pipeline_toolkit/message_subscriber.rb +4 -1
- metadata +4 -33
data/README.markdown
CHANGED
@@ -38,7 +38,7 @@ module PipelineToolkit
|
|
38
38
|
receive_line(line)
|
39
39
|
end
|
40
40
|
|
41
|
-
rescue
|
41
|
+
rescue Exception => e # rescued here because main thread does not seem to see it
|
42
42
|
DefaultLogger.error("#{e.class.name}: #{e.message}\n" << e.backtrace.join("\n"))
|
43
43
|
raise e
|
44
44
|
end
|
@@ -5,6 +5,9 @@ module PipelineToolkit
|
|
5
5
|
# Encode and decode messages using Marshal
|
6
6
|
#
|
7
7
|
class MessageCoder
|
8
|
+
|
9
|
+
UNESCAPE_MAP = {"@@" => "@","@r" => "\r","@n" => "\n"}
|
10
|
+
REGEX = UNESCAPE_MAP.keys.join "|"
|
8
11
|
|
9
12
|
##
|
10
13
|
# Encode the hash message
|
@@ -15,9 +18,9 @@ module PipelineToolkit
|
|
15
18
|
# NB: Using Msgpack because it's 9-10x faster than altnatives
|
16
19
|
# See http://gist.github.com/190849
|
17
20
|
str = MessagePack.pack(message)
|
18
|
-
|
19
|
-
|
20
|
-
str
|
21
|
+
|
22
|
+
# escape newlines. order is important.
|
23
|
+
str.gsub(/@/, "@@").gsub(/\n/, "@n").gsub(/\r/, "@r")
|
21
24
|
end
|
22
25
|
|
23
26
|
##
|
@@ -27,8 +30,13 @@ module PipelineToolkit
|
|
27
30
|
#
|
28
31
|
def self.decode(str)
|
29
32
|
str.chomp!
|
30
|
-
|
31
|
-
|
33
|
+
|
34
|
+
# unescape newlines
|
35
|
+
|
36
|
+
str.gsub(/#{regex}/) do |m|
|
37
|
+
UNESCAPE_MAP[m]
|
38
|
+
end
|
39
|
+
|
32
40
|
obj = MessagePack.unpack(str)
|
33
41
|
|
34
42
|
obj = case obj
|
@@ -72,7 +72,7 @@ module PipelineToolkit
|
|
72
72
|
# must call this to setup callback to notify_readable
|
73
73
|
conn.notify_readable = true
|
74
74
|
end
|
75
|
-
rescue
|
75
|
+
rescue Exception => e
|
76
76
|
DefaultLogger.error("#{e.class.name}: #{e.message}\n" << e.backtrace.join("\n"))
|
77
77
|
raise e
|
78
78
|
ensure
|
@@ -59,9 +59,11 @@ module PipelineToolkit
|
|
59
59
|
# @param message<Hash> The message to write to the exchange.
|
60
60
|
#
|
61
61
|
def process_standard(message)
|
62
|
-
DefaultLogger.
|
62
|
+
DefaultLogger.error("MessagePusher#process_standard(message)")
|
63
63
|
publish(message.except_keys(:ack_id))
|
64
64
|
acknowledge(message) if options[:ack] && message[:ack_id]
|
65
|
+
rescue Exception => e
|
66
|
+
DefaultLogger.error("msg_push bad message: START|#{message}|END\nbecause: #{e.class.name}: #{e.message}")
|
65
67
|
end
|
66
68
|
|
67
69
|
end
|
@@ -76,7 +76,7 @@ module PipelineToolkit
|
|
76
76
|
EM.add_periodic_timer(5) { calculate_message_statistics }
|
77
77
|
end
|
78
78
|
end
|
79
|
-
rescue
|
79
|
+
rescue Exception => e
|
80
80
|
DefaultLogger.error "#{e.class.name}: #{e.message}\n" << e.backtrace.join("\n")
|
81
81
|
raise e
|
82
82
|
ensure
|
@@ -175,6 +175,9 @@ module PipelineToolkit
|
|
175
175
|
end
|
176
176
|
store_acknowledgement(message, header) if options[:ack]
|
177
177
|
write(message)
|
178
|
+
rescue MessagePack::UnpackError => e
|
179
|
+
DefaultLogger.error("msg_subscribe couldn't unpack: #{body.inspect}")
|
180
|
+
header.ack
|
178
181
|
end
|
179
182
|
|
180
183
|
private
|
metadata
CHANGED
@@ -1,13 +1,12 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pipeline_toolkit
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash: 27
|
5
4
|
prerelease: false
|
6
5
|
segments:
|
7
6
|
- 1
|
8
|
-
-
|
7
|
+
- 4
|
9
8
|
- 0
|
10
|
-
version: 1.
|
9
|
+
version: 1.4.0
|
11
10
|
platform: ruby
|
12
11
|
authors:
|
13
12
|
- Aisha Fenton
|
@@ -16,18 +15,16 @@ autorequire:
|
|
16
15
|
bindir: bin
|
17
16
|
cert_chain: []
|
18
17
|
|
19
|
-
date:
|
18
|
+
date: 2011-09-02 00:00:00 +12:00
|
20
19
|
default_executable:
|
21
20
|
dependencies:
|
22
21
|
- !ruby/object:Gem::Dependency
|
23
22
|
name: amqp
|
24
23
|
prerelease: false
|
25
24
|
requirement: &id001 !ruby/object:Gem::Requirement
|
26
|
-
none: false
|
27
25
|
requirements:
|
28
26
|
- - ~>
|
29
27
|
- !ruby/object:Gem::Version
|
30
|
-
hash: 9
|
31
28
|
segments:
|
32
29
|
- 0
|
33
30
|
- 6
|
@@ -39,11 +36,9 @@ dependencies:
|
|
39
36
|
name: trollop
|
40
37
|
prerelease: false
|
41
38
|
requirement: &id002 !ruby/object:Gem::Requirement
|
42
|
-
none: false
|
43
39
|
requirements:
|
44
40
|
- - ~>
|
45
41
|
- !ruby/object:Gem::Version
|
46
|
-
hash: 47
|
47
42
|
segments:
|
48
43
|
- 1
|
49
44
|
- 16
|
@@ -54,11 +49,9 @@ dependencies:
|
|
54
49
|
name: eventmachine
|
55
50
|
prerelease: false
|
56
51
|
requirement: &id003 !ruby/object:Gem::Requirement
|
57
|
-
none: false
|
58
52
|
requirements:
|
59
53
|
- - ~>
|
60
54
|
- !ruby/object:Gem::Version
|
61
|
-
hash: 59
|
62
55
|
segments:
|
63
56
|
- 0
|
64
57
|
- 12
|
@@ -70,11 +63,9 @@ dependencies:
|
|
70
63
|
name: eventmachine_httpserver
|
71
64
|
prerelease: false
|
72
65
|
requirement: &id004 !ruby/object:Gem::Requirement
|
73
|
-
none: false
|
74
66
|
requirements:
|
75
67
|
- - ~>
|
76
68
|
- !ruby/object:Gem::Version
|
77
|
-
hash: 23
|
78
69
|
segments:
|
79
70
|
- 0
|
80
71
|
- 2
|
@@ -86,11 +77,9 @@ dependencies:
|
|
86
77
|
name: msgpack
|
87
78
|
prerelease: false
|
88
79
|
requirement: &id005 !ruby/object:Gem::Requirement
|
89
|
-
none: false
|
90
80
|
requirements:
|
91
81
|
- - ~>
|
92
82
|
- !ruby/object:Gem::Version
|
93
|
-
hash: 9
|
94
83
|
segments:
|
95
84
|
- 0
|
96
85
|
- 4
|
@@ -102,11 +91,9 @@ dependencies:
|
|
102
91
|
name: log4r
|
103
92
|
prerelease: false
|
104
93
|
requirement: &id006 !ruby/object:Gem::Requirement
|
105
|
-
none: false
|
106
94
|
requirements:
|
107
95
|
- - ~>
|
108
96
|
- !ruby/object:Gem::Version
|
109
|
-
hash: 1
|
110
97
|
segments:
|
111
98
|
- 1
|
112
99
|
- 1
|
@@ -118,11 +105,9 @@ dependencies:
|
|
118
105
|
name: json
|
119
106
|
prerelease: false
|
120
107
|
requirement: &id007 !ruby/object:Gem::Requirement
|
121
|
-
none: false
|
122
108
|
requirements:
|
123
109
|
- - ">="
|
124
110
|
- !ruby/object:Gem::Version
|
125
|
-
hash: 3
|
126
111
|
segments:
|
127
112
|
- 0
|
128
113
|
version: "0"
|
@@ -132,11 +117,9 @@ dependencies:
|
|
132
117
|
name: cucumber
|
133
118
|
prerelease: false
|
134
119
|
requirement: &id008 !ruby/object:Gem::Requirement
|
135
|
-
none: false
|
136
120
|
requirements:
|
137
121
|
- - ~>
|
138
122
|
- !ruby/object:Gem::Version
|
139
|
-
hash: 53
|
140
123
|
segments:
|
141
124
|
- 0
|
142
125
|
- 8
|
@@ -148,11 +131,9 @@ dependencies:
|
|
148
131
|
name: bunny
|
149
132
|
prerelease: false
|
150
133
|
requirement: &id009 !ruby/object:Gem::Requirement
|
151
|
-
none: false
|
152
134
|
requirements:
|
153
135
|
- - ~>
|
154
136
|
- !ruby/object:Gem::Version
|
155
|
-
hash: 7
|
156
137
|
segments:
|
157
138
|
- 0
|
158
139
|
- 6
|
@@ -164,11 +145,9 @@ dependencies:
|
|
164
145
|
name: background_process
|
165
146
|
prerelease: false
|
166
147
|
requirement: &id010 !ruby/object:Gem::Requirement
|
167
|
-
none: false
|
168
148
|
requirements:
|
169
149
|
- - ~>
|
170
150
|
- !ruby/object:Gem::Version
|
171
|
-
hash: 11
|
172
151
|
segments:
|
173
152
|
- 1
|
174
153
|
- 2
|
@@ -221,10 +200,6 @@ files:
|
|
221
200
|
- lib/pipeline_toolkit/util/socket_util.rb
|
222
201
|
- LICENSE.markdown
|
223
202
|
- README.markdown
|
224
|
-
- bin/msg_subscribe
|
225
|
-
- bin/msg_push
|
226
|
-
- bin/msg_sink
|
227
|
-
- bin/msg_generator
|
228
203
|
has_rdoc: true
|
229
204
|
homepage: http://github.com/visfleet/pipeline_toolkit
|
230
205
|
licenses: []
|
@@ -235,27 +210,23 @@ rdoc_options: []
|
|
235
210
|
require_paths:
|
236
211
|
- lib
|
237
212
|
required_ruby_version: !ruby/object:Gem::Requirement
|
238
|
-
none: false
|
239
213
|
requirements:
|
240
214
|
- - ">="
|
241
215
|
- !ruby/object:Gem::Version
|
242
|
-
hash: 3
|
243
216
|
segments:
|
244
217
|
- 0
|
245
218
|
version: "0"
|
246
219
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
247
|
-
none: false
|
248
220
|
requirements:
|
249
221
|
- - ">="
|
250
222
|
- !ruby/object:Gem::Version
|
251
|
-
hash: 3
|
252
223
|
segments:
|
253
224
|
- 0
|
254
225
|
version: "0"
|
255
226
|
requirements: []
|
256
227
|
|
257
228
|
rubyforge_project:
|
258
|
-
rubygems_version: 1.3.
|
229
|
+
rubygems_version: 1.3.6
|
259
230
|
signing_key:
|
260
231
|
specification_version: 3
|
261
232
|
summary: Toolkit for building processing pipelines using Unix Pipes and AMQP messages
|