onstomp 1.0.0 → 1.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (52) hide show
  1. data/.gitignore +4 -0
  2. data/.yardopts +2 -1
  3. data/Rakefile +147 -0
  4. data/extra_doc/API.md +491 -0
  5. data/extra_doc/API.md.erb +33 -0
  6. data/extra_doc/DeveloperNarrative.md +123 -0
  7. data/extra_doc/UserNarrative.md +511 -0
  8. data/lib/onstomp.rb +5 -5
  9. data/lib/onstomp/client.rb +6 -1
  10. data/lib/onstomp/components/frame.rb +6 -6
  11. data/lib/onstomp/components/frame_headers.rb +18 -18
  12. data/lib/onstomp/components/scopes/transaction_scope.rb +11 -11
  13. data/lib/onstomp/components/subscription.rb +2 -2
  14. data/lib/onstomp/components/threaded_processor.rb +1 -1
  15. data/lib/onstomp/components/uri.rb +1 -1
  16. data/lib/onstomp/connections/base.rb +5 -5
  17. data/lib/onstomp/connections/heartbeating.rb +2 -2
  18. data/lib/onstomp/connections/serializers/stomp_1.rb +6 -6
  19. data/lib/onstomp/connections/serializers/stomp_1_1.rb +2 -2
  20. data/lib/onstomp/connections/stomp_1_0.rb +1 -1
  21. data/lib/onstomp/connections/stomp_1_1.rb +1 -1
  22. data/lib/onstomp/failover.rb +4 -0
  23. data/lib/onstomp/failover/buffers.rb +1 -0
  24. data/lib/onstomp/failover/buffers/receipts.rb +101 -0
  25. data/lib/onstomp/failover/buffers/written.rb +2 -2
  26. data/lib/onstomp/failover/client.rb +15 -12
  27. data/lib/onstomp/failover/failover_configurable.rb +3 -3
  28. data/lib/onstomp/failover/pools/base.rb +1 -1
  29. data/lib/onstomp/failover/uri.rb +41 -16
  30. data/lib/onstomp/interfaces/client_configurable.rb +1 -1
  31. data/lib/onstomp/interfaces/client_events.rb +30 -11
  32. data/lib/onstomp/interfaces/connection_events.rb +5 -1
  33. data/lib/onstomp/interfaces/event_manager.rb +2 -2
  34. data/lib/onstomp/interfaces/frame_methods.rb +169 -8
  35. data/lib/onstomp/interfaces/uri_configurable.rb +3 -3
  36. data/lib/onstomp/open-uri/client_extensions.rb +4 -4
  37. data/lib/onstomp/version.rb +2 -2
  38. data/onstomp.gemspec +0 -1
  39. data/spec/onstomp/components/threaded_processor_spec.rb +21 -0
  40. data/spec/onstomp/connections/base_spec.rb +15 -0
  41. data/spec/onstomp/failover/buffers/receipts_spec.rb +189 -0
  42. data/spec/onstomp/failover/buffers/written_spec.rb +167 -1
  43. data/spec/onstomp/failover/client_spec.rb +70 -1
  44. data/spec/onstomp/failover/failover_events_spec.rb +1 -2
  45. data/spec/onstomp/failover/uri_spec.rb +37 -4
  46. data/spec/onstomp/full_stacks/failover_spec.rb +76 -25
  47. data/spec/onstomp/full_stacks/onstomp_spec.rb +52 -8
  48. data/spec/onstomp/full_stacks/onstomp_ssh_spec.rb +83 -0
  49. data/spec/onstomp/full_stacks/test_broker.rb +45 -29
  50. metadata +11 -15
  51. data/DeveloperNarrative.md +0 -15
  52. data/UserNarrative.md +0 -8
@@ -6,6 +6,7 @@ module OnStomp::Interfaces::ConnectionEvents
6
6
 
7
7
  # @group Connection State Events
8
8
 
9
+ # @api gem:1 STOMP:1.0,1.1
9
10
  # Binds a callback to be invoked when a connection has been fully
10
11
  # established between broker and client.
11
12
  # @yield [client, connection] callback invoked when event is triggered
@@ -13,6 +14,7 @@ module OnStomp::Interfaces::ConnectionEvents
13
14
  # @yieldparam [OnStomp::Connections::Base] connection that triggered
14
15
  # the event (in general the same as +client.connection+)
15
16
  create_event_methods :established, :on
17
+ # @api gem:1 STOMP:1.1
16
18
  # Binds a callback to be invoked when a connection has been died due to
17
19
  # insufficient data transfer.
18
20
  # @note Only applies to STOMP 1.1 connections with heartbeating enabled.
@@ -21,6 +23,7 @@ module OnStomp::Interfaces::ConnectionEvents
21
23
  # @yieldparam [OnStomp::Connections::Base] connection that triggered
22
24
  # the event (in general the same as +client.connection+)
23
25
  create_event_methods :died, :on
26
+ # @api gem:1 STOMP:1.0,1.1
24
27
  # Binds a callback to be invoked when a connection has been terminated
25
28
  # (eg: closed unexpectedly due to an exception)
26
29
  # @yield [client, connection] callback invoked when event is triggered
@@ -28,6 +31,7 @@ module OnStomp::Interfaces::ConnectionEvents
28
31
  # @yieldparam [OnStomp::Connections::Base] connection that triggered
29
32
  # the event (in general the same as +client.connection+)
30
33
  create_event_methods :terminated, :on
34
+ # @api gem:1 STOMP:1.0,1.1
31
35
  # Binds a callback to be invoked when a connection has been closed, either
32
36
  # through a graceful disconnect or unexpectedly.
33
37
  # @note If connection is closed unexpectedly, {#on_died} is triggered first,
@@ -47,7 +51,7 @@ module OnStomp::Interfaces::ConnectionEvents
47
51
  end
48
52
 
49
53
  # Takes a hash of event bindings a {OnStomp::Client client} has stored
50
- # and binds them to this connection, then triggers +on_established+.
54
+ # and binds them to this connection, then triggers `on_established`.
51
55
  # This allows users to add callbacks for
52
56
  # connection events before the connection exist and have said callbacks
53
57
  # installed once the connection is created.
@@ -7,7 +7,7 @@ module OnStomp::Interfaces::EventManager
7
7
  base.extend ClassMethods
8
8
  end
9
9
 
10
- # Binds a +Proc+ to be invoked when the given +event_name+ is triggered.
10
+ # Binds a `Proc` to be invoked when the given `event_name` is triggered.
11
11
  # @param [Symbol] event_name
12
12
  # @param [Proc] cb_proc
13
13
  # @return [self]
@@ -23,7 +23,7 @@ module OnStomp::Interfaces::EventManager
23
23
  end
24
24
 
25
25
  # Triggers an event by the given name, passing along any additional
26
- # +args+ as parameters to the callback
26
+ # `args` as parameters to the callback
27
27
  # @param [Symbol] event_name event to trigger
28
28
  # @param [Object, Object, ...] args
29
29
  def trigger_event(event_name, *args)
@@ -3,6 +3,22 @@
3
3
  # Mixin for {OnStomp::Client clients} to provide methods that create
4
4
  # and transmit STOMP {OnStomp::Components::Frame frames}.
5
5
  module OnStomp::Interfaces::FrameMethods
6
+ # I'm using @api tags in here to provide a bit of data, here's the format:
7
+ # gem:<major version>[,<major version>,...] STOMP:<version>[,<version>,...]
8
+ # The first chunk indicates the MAJOR versions of the OnStomp gem that support
9
+ # the method. The second chunk indicates the STOMP protocol versions that
10
+ # support the frame generated by this method. A single '*' after the STOMP
11
+ # versions indicates that there are minor changes between protocols
12
+ # (eg: new acceptable values for an optional header.) A single '!' after
13
+ # the STOMP versions indicates that there are major changes between protocols
14
+ # (eg: a new header is required, as with ACK) indicating that some ways of
15
+ # calling the method may produce errors with newer versions of the STOMP
16
+ # protocol. All other text after the severity markers is for my own reference
17
+ # to remind me of the changes. These API tags will be queried and put into
18
+ # a document to provide a quick reference of changes between protocols or
19
+ # major gem versions for end users.
20
+
21
+ # @api gem:1 STOMP:1.0,1.1
6
22
  # Transmits a SEND frame generated by the client's connection
7
23
  # @param [String] dest destination for the frame
8
24
  # @param [String] body body of the frame
@@ -14,11 +30,38 @@ module OnStomp::Interfaces::FrameMethods
14
30
  # @yieldparam [OnStomp::Components::Frame] receipt RECEIPT for the frame
15
31
  # @raise OnStomp::UnsupportedCommandError if the connection does not support
16
32
  # SEND frames
33
+ # @option headers [String] :'content-type' The content type of the SEND
34
+ # frame's body. If the body is text (ie: has a non-binary `encoding`)
35
+ # `onstomp` will set the :'content-type' header to 'text/plain' if it
36
+ # has not been set. See {file:docs/Encodings.md Encodings} for more
37
+ # details.
38
+ # @option headers [String] :receipt A receipt ID for the frame, this
39
+ # will be matched by the :'receipt-id' header in the broker's RECEIPT
40
+ # response.
41
+ # @option headers [String] :transaction The ID of an existing transaction
42
+ # to add this frame to.
43
+ # @option headers [String] :'content-length' If you set this header, it
44
+ # will be overwritten, so save your fingers from a few keystrokes by not
45
+ # setting it. All SEND frames generated by `onstomp` will have a
46
+ # :'content-length' header.
47
+ # @example
48
+ # # Transmit a simple SEND frame to the broker
49
+ # client.send '/queue/example', 'Hello STOMP'
50
+ #
51
+ # # Everything's better with umlauts.
52
+ # client.send '/topic/example', "Hëllo Wörld",
53
+ # :'content-type' => 'text/plain;charset=UTF-8'
54
+ #
55
+ # # Get a receipt for the SEND frame
56
+ # client.send '/queue/example', "Did you get that thing I sent you?" do |r|
57
+ # puts "The broker received our SEND frame"
58
+ # end
17
59
  def send dest, body, headers={}, &cb
18
60
  transmit connection.send_frame(dest, body, headers), :receipt => cb
19
61
  end
20
62
  alias :puts :send
21
63
 
64
+ # @api gem:1 STOMP:1.0,1.1* [+ack:client-individual]
22
65
  # Transmits a SUBSCRIBE frame generated by the client's connection. Depending
23
66
  # upon the connection, a subscription can be set to various MESSAGE
24
67
  # acknowledgement modes by setting the +:ack+ header.
@@ -50,29 +93,65 @@ module OnStomp::Interfaces::FrameMethods
50
93
  # @see #unsubscribe
51
94
  # @see #ack
52
95
  # @see #nack
96
+ # @option headers [String] :id A unique ID for the subscription. If you
97
+ # do not set this header, an subscription ID will be automatically
98
+ # generated ensuring that all `onstomp` SUBSCRIBE frames have an ID.
99
+ # @option headers [String] :ack ('auto') The ack mode to use with this
100
+ # subscription. A value of 'auto' means MESSAGE frames are assumed
101
+ # received and no ACK frame is necessary. A value of 'client' or
102
+ # 'client-individual' means all MESSAGE frames should be acknowledged
103
+ # with an ACK (or un-acknowledged with a NACK.)
104
+ # @option headers [String] :selector A SQL style filter to use against
105
+ # MESSAGE frames (the form and availability of this will vary by
106
+ # broker.)
107
+ # @option headers [String] :receipt A receipt ID for the frame, this
108
+ # will be matched by the :'receipt-id' header in the broker's RECEIPT
109
+ # response.
110
+ # @example
111
+ # # A basic subscription
112
+ # client.subscribe '/queue/example' do |m|
113
+ # puts "Got a MESSAGE: #{m.body}"
114
+ # end
115
+ #
116
+ # # ACK our MESSAGE frames
117
+ # client.subscribe '/queue/example', :ack => 'client' do |m|
118
+ # client.ack m
119
+ # puts "Got (and ACK'd) a MESSAGE: #{m.body}"
120
+ # end
53
121
  def subscribe dest, headers={}, &cb
54
122
  transmit connection.subscribe_frame(dest, headers), :subscribe => cb
55
123
  end
56
124
 
125
+ # @api gem:1 STOMP:1.0,1.1
57
126
  # Transmits an UNSUBSCRIBE frame generated by the client's connection.
58
127
  # @overload unsubscribe(subscribe_frame, headers={})
59
128
  # Generates an UNSUBSCRIBE frame to match the given SUBSCRIBE frame
60
129
  # @param [OnStomp::Components::Frame] subscribe_frame
61
130
  # @param [{#to_sym => #to_s}] headers optional headers to include in
62
131
  # the UNSUBSCRIBE frame
132
+ # @example
133
+ # sub = client.subscribe('/queue/test') { |m| ... }
134
+ # client.unsubscribe sub
63
135
  # @overload unsubscribe(id, headers={})
64
136
  # Generates an UNSUBSCRIBE frame with the given id
65
137
  # @param [String] id
66
138
  # @param [{#to_sym => #to_s}] headers optional headers to include in
67
139
  # the UNSUBSCRIBE frame
140
+ # @example
141
+ # client.subscribe('/queue/test', :id => 's-1234') { |m| ... }
142
+ # client.unsubscribe 's-1234'
68
143
  # @return [OnStomp::Components::Frame] UNSUBSCRIBE frame
69
144
  # @raise OnStomp::UnsupportedCommandError if the connection does not support
70
145
  # UNSUBSCRIBE frames
71
146
  # @see #subscribe
147
+ # @option headers [String] :receipt A receipt ID for the frame, this
148
+ # will be matched by the :'receipt-id' header in the broker's RECEIPT
149
+ # response.
72
150
  def unsubscribe frame_or_id, headers={}
73
151
  transmit connection.unsubscribe_frame(frame_or_id, headers)
74
152
  end
75
-
153
+
154
+ # @api gem:1 STOMP:1.0,1.1
76
155
  # Transmits a BEGIN frame generated by the client's connection to start
77
156
  # a transaction.
78
157
  # @param [String] tx_id identifier for the transaction
@@ -83,10 +162,18 @@ module OnStomp::Interfaces::FrameMethods
83
162
  # BEGIN frames
84
163
  # @see #abort
85
164
  # @see #commit
165
+ # @option headers [String] :receipt A receipt ID for the frame, this
166
+ # will be matched by the :'receipt-id' header in the broker's RECEIPT
167
+ # response.
168
+ # @example
169
+ # client.begin 't-1234'
170
+ # client.send '/queue/test', 'hello transaction!', :transaction => 't-1234'
171
+ # client.commit 't-1234'
86
172
  def begin tx_id, headers={}
87
173
  transmit connection.begin_frame(tx_id, headers)
88
174
  end
89
-
175
+
176
+ # @api gem:1 STOMP:1.0,1.1
90
177
  # Transmits an ABORT frame generated by the client's connection to rollback
91
178
  # a transaction.
92
179
  # @param [String] tx_id identifier for the transaction
@@ -97,10 +184,18 @@ module OnStomp::Interfaces::FrameMethods
97
184
  # ABORT frames
98
185
  # @see #begin
99
186
  # @see #commit
187
+ # @option headers [String] :receipt A receipt ID for the frame, this
188
+ # will be matched by the :'receipt-id' header in the broker's RECEIPT
189
+ # response.
190
+ # @example
191
+ # client.begin 't-1234'
192
+ # client.send '/queue/test', 'hello transaction!', :transaction => 't-1234'
193
+ # client.abort 't-1234'
100
194
  def abort tx_id, headers={}
101
195
  transmit connection.abort_frame(tx_id, headers)
102
196
  end
103
-
197
+
198
+ # @api gem:1 STOMP:1.0,1.1
104
199
  # Transmits a COMMIT frame generated by the client's connection to complete
105
200
  # a transaction.
106
201
  # @param [String] tx_id identifier for the transaction
@@ -111,10 +206,18 @@ module OnStomp::Interfaces::FrameMethods
111
206
  # COMMIT frames
112
207
  # @see #abort
113
208
  # @see #begin
209
+ # @option headers [String] :receipt A receipt ID for the frame, this
210
+ # will be matched by the :'receipt-id' header in the broker's RECEIPT
211
+ # response.
212
+ # @example
213
+ # client.begin 't-1234'
214
+ # client.send '/queue/test', 'hello transaction!', :transaction => 't-1234'
215
+ # client.commit 't-1234'
114
216
  def commit tx_id, headers={}
115
217
  transmit connection.commit_frame(tx_id, headers)
116
218
  end
117
219
 
220
+ # @api gem:1 STOMP:1.0,1.1* [DISCONNECTs are now always RECEIPTable]
118
221
  # Transmits a DISCONNECT frame generated by the client's connection to end
119
222
  # the STOMP session.
120
223
  # @param [{#to_sym => #to_s}] headers additional headers to include in
@@ -122,42 +225,77 @@ module OnStomp::Interfaces::FrameMethods
122
225
  # @return [OnStomp::Components::Frame] DISCONNECT frame
123
226
  # @raise OnStomp::UnsupportedCommandError if the connection does not support
124
227
  # DISCONNECT frames
228
+ # @option headers [String] :receipt A receipt ID for the frame, this
229
+ # will be matched by the :'receipt-id' header in the broker's RECEIPT
230
+ # response.
231
+ # @example
232
+ # client.connect
233
+ # client.send '/queue/test', 'a quick message'
234
+ # client.disconnect
125
235
  def disconnect headers={}
126
236
  transmit connection.disconnect_frame headers
127
237
  end
128
238
 
239
+ # @api gem:1 STOMP:1.0,1.1! [+subscription:id]
129
240
  # Transmits an ACK frame generated by the client's connection.
130
241
  # @overload ack(message_frame, headers={})
242
+ # @api gem:1 STOMP:1.0,1.1
131
243
  # @note Users should use this form whenever possible as it will work
132
244
  # with STOMP 1.0 and 1.1 connections.
133
245
  # @param [OnStomp::Components::Frame] message_frame the MESSAGE frame to
134
246
  # acknowledge.
135
247
  # @param [{#to_sym => #to_s}] headers additional headers to include in
136
248
  # the frame
249
+ # @example
250
+ # client.subscribe '/queue/test', :ack => 'client' do |m|
251
+ # if m[:'x-of-interest-to-me'] == 'hells yes'
252
+ # client.ack m
253
+ # end
254
+ # end
137
255
  # @overload ack(message_id, headers={})
138
- # @note This form will raise an +ArgumentError+ with STOMP 1.1 connections
256
+ # @api gem:1 STOMP:1.0
257
+ # @note This form will raise an `ArgumentError` with STOMP 1.1 connections
139
258
  # as a subscription ID is also required to ACK a received MESSAGE.
140
259
  # @param [String] message_id +message-id+ header of MESSAGE frame to
141
260
  # acknowledge.
142
261
  # @param [{#to_sym => #to_s}] headers additional headers to include in
143
262
  # the frame
144
- # @overload ack(message_id, subscription_id, heders={})
263
+ # @example
264
+ # client.subscribe '/queue/test', :ack => 'client' do |m|
265
+ # if m[:'x-of-interest-to-me'] == 'hells yes'
266
+ # client.ack m[:'message-id']
267
+ # end
268
+ # end
269
+ # @overload ack(message_id, subscription_id, headers={})
270
+ # @api gem:1 STOMP:1.0,1.1
145
271
  # @note This form should be used with STOMP 1.1 connections when it is
146
272
  # not possible to provide the actual MESSAGE frame.
147
273
  # @param [String] message_id +message-id+ header of MESSAGE frame to
148
274
  # acknowledge.
149
- # @param [String] subscription_id +subscription+ header of MESSAGE frame to
275
+ # @param [String] subscription_id `subscription` header of MESSAGE frame to
150
276
  # acknowledge.
151
277
  # @param [{#to_sym => #to_s}] headers additional headers to include in
152
278
  # the frame
279
+ # @example
280
+ # client.subscribe '/queue/test', :ack => 'client' do |m|
281
+ # if m[:'x-of-interest-to-me'] == 'hells yes'
282
+ # client.ack m[:'message-id'], m[:subscription]
283
+ # end
284
+ # end
153
285
  # @return [OnStomp::Components::Frame] ACK frame
154
286
  # @raise OnStomp::UnsupportedCommandError if the connection does not support
155
287
  # ACK frames
156
288
  # @see #nack
289
+ # @option headers [String] :receipt A receipt ID for the frame, this
290
+ # will be matched by the :'receipt-id' header in the broker's RECEIPT
291
+ # response.
292
+ # @option headers [String] :transaction The ID of an existing transaction
293
+ # to add this frame to.
157
294
  def ack *args
158
295
  transmit connection.ack_frame(*args)
159
296
  end
160
297
 
298
+ # @api gem:1 STOMP:1.1
161
299
  # Transmits a NACK frame generated by the client's connection.
162
300
  # @overload nack(message_frame, headers={})
163
301
  # Generates a NACK frame for the given MESSAGE frame.
@@ -165,25 +303,48 @@ module OnStomp::Interfaces::FrameMethods
165
303
  # un-acknowledge.
166
304
  # @param [{#to_sym => #to_s}] headers additional headers to include in
167
305
  # the frame
306
+ # @example
307
+ # client.subscribe '/queue/test', :ack => 'client' do |m|
308
+ # if m[:'x-of-interest-to-me'] == 'hells no!'
309
+ # client.nack m
310
+ # end
311
+ # end
168
312
  # @overload nack(message_id, subscription_id, heders={})
169
313
  # @param [String] message_id +message-id+ header of MESSAGE frame to
170
314
  # un-acknowledge.
171
- # @param [String] subscription_id +subscription+ header of MESSAGE frame to
315
+ # @param [String] subscription_id `subscription` header of MESSAGE frame to
172
316
  # un-acknowledge.
173
317
  # @param [{#to_sym => #to_s}] headers additional headers to include in
174
318
  # the frame
319
+ # @example
320
+ # client.subscribe '/queue/test', :ack => 'client' do |m|
321
+ # if m[:'x-of-interest-to-me'] == 'hells no!'
322
+ # client.nack m[:'message-id'], m[:subscription]
323
+ # end
324
+ # end
175
325
  # @return [OnStomp::Components::Frame] NACK frame
176
326
  # @raise OnStomp::UnsupportedCommandError if the connection does not support
177
327
  # NACK frames
178
328
  # @see #ack
329
+ # @option headers [String] :receipt A receipt ID for the frame, this
330
+ # will be matched by the :'receipt-id' header in the broker's RECEIPT
331
+ # response.
332
+ # @option headers [String] :transaction The ID of an existing transaction
333
+ # to add this frame to.
179
334
  def nack *args
180
335
  transmit connection.nack_frame(*args)
181
336
  end
182
-
337
+
338
+ # @api gem:1 STOMP:1.1
183
339
  # Transmits a client heartbeat frame generated by the client's connection.
184
340
  # @return [OnStomp::Components::Frame] heartbeat frame
185
341
  # @raise OnStomp::UnsupportedCommandError if the connection does not support
186
342
  # heartbeat frames
343
+ # @example
344
+ # # If it's been a while since you've sent any data to the broker:
345
+ # client.beat
346
+ # # Now the broker knows you're still listening, nay hanging on its every
347
+ # # every word.
187
348
  def beat
188
349
  transmit connection.heartbeat_frame
189
350
  end
@@ -2,7 +2,7 @@
2
2
 
3
3
  # Module for configurable attributes
4
4
  module OnStomp::Interfaces::UriConfigurable
5
- # Extends +base+ with {OnStomp::Interfaces::UriConfigurable::ClassMethods}
5
+ # Extends `base` with {OnStomp::Interfaces::UriConfigurable::ClassMethods}
6
6
  def self.included(base)
7
7
  base.extend ClassMethods
8
8
  end
@@ -41,7 +41,7 @@ module OnStomp::Interfaces::UriConfigurable
41
41
  # by a URI query parameter sharing the same name, a property of a URI or
42
42
  # a default value. The value of this attribute will be transformed by
43
43
  # invoking the given block, if one has been provided. If the attributes
44
- # created by this method are assigned an +Array+, only the first element
44
+ # created by this method are assigned an `Array`, only the first element
45
45
  # will be used as their value.
46
46
  def attr_configurable_single *args, &block
47
47
  trans = attr_configurable_wrap lambda { |v| v.is_a?(Array) ? v.first : v }, block
@@ -63,7 +63,7 @@ module OnStomp::Interfaces::UriConfigurable
63
63
  # by a URI query parameter sharing the same name, a property of a URI or
64
64
  # a default value. The value of this attribute will be transformed by
65
65
  # invoking the given block, if one has been provided. If the attributes
66
- # created by this method are assigned a value that is not an +Array+, the
66
+ # created by this method are assigned a value that is not an `Array`, the
67
67
  # value will be wrapped in an array.
68
68
  def attr_configurable_arr *args, &block
69
69
  trans = attr_configurable_wrap lambda { |v| Array(v) }, block
@@ -5,7 +5,7 @@
5
5
  module OnStomp::OpenURI::ClientExtensions
6
6
  attr_reader :auto_destination, :openuri_message_queue
7
7
 
8
- # Aliases {#send_with_openuri} as +send+
8
+ # Aliases {#send_with_openuri} as `send`
9
9
  def self.extended inst
10
10
  inst.instance_eval do
11
11
  alias :send_without_openuri :send
@@ -43,8 +43,8 @@ module OnStomp::OpenURI::ClientExtensions
43
43
  end
44
44
  end
45
45
 
46
- # Returns +n+ frames read from the subscription. If +n+ is ommited,
47
- # the next frame is returned, otherwise an array of the next +n+ frames
46
+ # Returns `n` frames read from the subscription. If `n` is ommited,
47
+ # the next frame is returned, otherwise an array of the next `n` frames
48
48
  # is returned.
49
49
  # @see #each
50
50
  # @param [Fixnum,nil] n
@@ -62,7 +62,7 @@ module OnStomp::OpenURI::ClientExtensions
62
62
  alias :gets :first
63
63
 
64
64
  # Assigns the auto destination. When a stomp:// URI is opened, this
65
- # will initially be set to the +path+ of the URI.
65
+ # will initially be set to the `path` of the URI.
66
66
  # @param [String] dest
67
67
  # @return [String,nil]
68
68
  def auto_destination= dest
@@ -1,13 +1,13 @@
1
1
  # -*- encoding: utf-8 -*-
2
2
 
3
- # Primary namespace for the +onstomp+ gem
3
+ # Primary namespace for the `onstomp` gem
4
4
  module OnStomp
5
5
  # Major / API version
6
6
  MAJOR = 1
7
7
  # Minor / feature version
8
8
  MINOR = 0
9
9
  # Patch version
10
- PATCH = 0
10
+ PATCH = 1
11
11
  # Complete version
12
12
  VERSION = "#{MAJOR}.#{MINOR}.#{PATCH}"
13
13
  end
@@ -25,5 +25,4 @@ Gem::Specification.new do |s|
25
25
  s.add_development_dependency('simplecov', '>= 0.3.0')
26
26
  s.add_development_dependency('yard', '>= 0.6.0')
27
27
  s.add_development_dependency('rake')
28
- s.add_development_dependency('bluecloth')
29
28
  end