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 CHANGED
@@ -1,10 +1,10 @@
1
1
  # Pipeline Toolkit #
2
- by VisFleet
2
+ by [vWorkApp](http://www.vworkapp.com)
3
3
 
4
4
 
5
5
  ===============
6
6
  |^^:^^^^:Mw^^^| Pipeline Toolkit
7
- | : .:Mw; | By VisFleet
7
+ | : .:Mw; | By vWorkApp
8
8
  \-------------/ (c) 2009
9
9
  |^:^^^^:Mw^^|
10
10
  | : :Mw; |
@@ -38,7 +38,7 @@ module PipelineToolkit
38
38
  receive_line(line)
39
39
  end
40
40
 
41
- rescue StandardError => e # rescued here because main thread does not seem to see it
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
- str.gsub!(/\r/, "@@r")
19
- str.gsub!(/\n/, "@@n")
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
- str.gsub!(/@@r/, "\r")
31
- str.gsub!(/@@n/, "\n")
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 StandardError => e
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.debug("MessagePusher#process_standard(message)")
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 StandardError => e
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
- - 3
7
+ - 4
9
8
  - 0
10
- version: 1.3.0
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: 2010-12-14 00:00:00 +13:00
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.7
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