pipeline_toolkit 1.3.0 → 1.4.0

Sign up to get free protection for your applications and to get access to all the features.
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