adhearsion 2.3.4 → 2.3.5

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.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: ce13923a79ebf09d66a57ac08187110885e8ab19
4
+ data.tar.gz: 893aa45657fc58b288d44693b60afbe493449997
5
+ SHA512:
6
+ metadata.gz: 54bc58e3bef695e4a2edcdc29d15833ce9a5954fc8c0dabab4fd7fc35f3bfac52f74c09ad5ed591242740c53553af1728441288143b7d3028d1edafae7f1629b
7
+ data.tar.gz: 0173249d5786ffdcf9e96884ec6b271e97b3f1cfacfd9c3674b392e0d73edb4379c163ab62d7d29bc03686a71c69a4c677387bc5466b1001b2ce246a4152a96c
@@ -1,5 +1,9 @@
1
1
  # [develop](https://github.com/adhearsion/adhearsion)
2
2
 
3
+ # [2.3.5](https://github.com/adhearsion/adhearsion/compare/v2.3.4...v2.3.5) - [2013-06-06](https://rubygems.org/gems/adhearsion/versions/2.3.5)
4
+ * Bugfix: Fix race conditions in barging in before output start is acknowledged
5
+ * Performance enhancement: Use Celluloid's thread pool for call controller threads to reduce thread setup overhead
6
+
3
7
  # [2.3.4](https://github.com/adhearsion/adhearsion/compare/v2.3.3...v2.3.4) - [2013-05-14](https://rubygems.org/gems/adhearsion/versions/2.3.4)
4
8
  * Bugfix: Process signals safely in the main thread - fixes shutdown on Ruby 2.0
5
9
  * Bugfix: Expose the cert store directory in Punchblock config
@@ -86,7 +86,7 @@ module Adhearsion
86
86
  end
87
87
 
88
88
  def bg_exec(completion_callback = nil)
89
- Thread.new do
89
+ Celluloid::ThreadHandle.new do
90
90
  catching_standard_errors do
91
91
  exec_with_callback completion_callback
92
92
  end
@@ -9,11 +9,14 @@ module Adhearsion
9
9
  # @yields The output component before executing it
10
10
  # @raises [PlaybackError] if (one of) the given argument(s) could not be played
11
11
  #
12
- def output(content, options = {})
12
+ def output(content, options = {}, &block)
13
13
  options.merge! :ssml => content.to_s
14
14
  component = new_output options
15
- yield component if block_given?
16
- controller.execute_component_and_await_completion component
15
+ if block
16
+ controller.execute_component_and_await_completion component, &block
17
+ else
18
+ controller.execute_component_and_await_completion component
19
+ end
17
20
  rescue Call::Hangup
18
21
  raise
19
22
  rescue Adhearsion::Error, Punchblock::ProtocolError => e
@@ -1,5 +1,5 @@
1
1
  # encoding: utf-8
2
2
 
3
3
  module Adhearsion
4
- VERSION = '2.3.4'
4
+ VERSION = '2.3.5'
5
5
  end
@@ -27,12 +27,18 @@ module Adhearsion
27
27
  subject.output content, :start_paused => true
28
28
  end
29
29
 
30
- it "yields the component to the block before executing it" do
31
- component = Punchblock::Component::Output.new :ssml => content, :start_paused => true
32
- expect_component_execution component
30
+ it "yields the component to the block before waiting for it to finish" do
31
+ component = Punchblock::Component::Output.new :ssml => content
32
+
33
+ controller.should_receive(:execute_component_and_await_completion).once.with(component).and_yield(:foo)
34
+
35
+ @foo = nil
36
+
33
37
  subject.output content do |comp|
34
- comp.start_paused = true
38
+ @foo = comp
35
39
  end
40
+
41
+ @foo.should == :foo
36
42
  end
37
43
 
38
44
  it "raises a PlaybackError if the component fails to start" do
@@ -697,9 +697,7 @@ module Adhearsion
697
697
 
698
698
  #test does pass and method works, but not sure if the empty method is a good idea
699
699
  it "plays the correct output" do
700
- def controller.write_and_await_response(input_component)
701
- # it is actually a no-op here
702
- end
700
+ controller.stub(:write_and_await_response)
703
701
 
704
702
  expect_component_complete_event
705
703
  expect_component_execution Punchblock::Component::Output.new(:ssml => ssml.to_s)
@@ -707,22 +705,23 @@ module Adhearsion
707
705
  end
708
706
 
709
707
  it "returns a single digit amongst the allowed when pressed" do
710
- def controller.write_and_await_response(input_component)
708
+ controller.should_receive(:write_and_await_response).with(kind_of(Punchblock::Component::Input)) do |input_component|
711
709
  input_component.trigger_event_handler Punchblock::Event::Complete.new
712
710
  end
713
711
 
714
- expect_component_complete_event
712
+ controller.should_receive(:write_and_await_response).once.with(kind_of(Punchblock::Component::Output))
713
+
715
714
  Punchblock::Component::Output.any_instance.should_receive(:stop!)
716
- expect_component_execution output_component
715
+ Punchblock::Component::Output.any_instance.should_receive(:complete_event).and_return mock('complete', reason: mock('Reason'))
716
+ expect_input_component_complete_event 'dtmf-5'
717
+
717
718
  subject.stream_file(prompt, allowed_digits).should be == '5'
718
719
  end
719
720
 
720
721
  context "with output options passed in" do
721
722
  let(:extra_options) { {renderer: :native } }
722
723
  it "plays the correct output with options" do
723
- def controller.write_and_await_response(input_component)
724
- # it is actually a no-op here
725
- end
724
+ controller.stub(:write_and_await_response)
726
725
 
727
726
  expect_component_complete_event
728
727
  expect_component_execution Punchblock::Component::Output.new({:ssml => ssml.to_s}.merge(extra_options))
metadata CHANGED
@@ -1,8 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: adhearsion
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.3.4
5
- prerelease:
4
+ version: 2.3.5
6
5
  platform: ruby
7
6
  authors:
8
7
  - Jay Phillips
@@ -12,12 +11,11 @@ authors:
12
11
  autorequire:
13
12
  bindir: bin
14
13
  cert_chain: []
15
- date: 2013-05-15 00:00:00.000000000 Z
14
+ date: 2013-06-06 00:00:00.000000000 Z
16
15
  dependencies:
17
16
  - !ruby/object:Gem::Dependency
18
17
  name: activesupport
19
18
  requirement: !ruby/object:Gem::Requirement
20
- none: false
21
19
  requirements:
22
20
  - - ~>
23
21
  - !ruby/object:Gem::Version
@@ -25,7 +23,6 @@ dependencies:
25
23
  type: :runtime
26
24
  prerelease: false
27
25
  version_requirements: !ruby/object:Gem::Requirement
28
- none: false
29
26
  requirements:
30
27
  - - ~>
31
28
  - !ruby/object:Gem::Version
@@ -33,7 +30,6 @@ dependencies:
33
30
  - !ruby/object:Gem::Dependency
34
31
  name: adhearsion-loquacious
35
32
  requirement: !ruby/object:Gem::Requirement
36
- none: false
37
33
  requirements:
38
34
  - - ~>
39
35
  - !ruby/object:Gem::Version
@@ -41,7 +37,6 @@ dependencies:
41
37
  type: :runtime
42
38
  prerelease: false
43
39
  version_requirements: !ruby/object:Gem::Requirement
44
- none: false
45
40
  requirements:
46
41
  - - ~>
47
42
  - !ruby/object:Gem::Version
@@ -49,7 +44,6 @@ dependencies:
49
44
  - !ruby/object:Gem::Dependency
50
45
  name: bundler
51
46
  requirement: !ruby/object:Gem::Requirement
52
- none: false
53
47
  requirements:
54
48
  - - ~>
55
49
  - !ruby/object:Gem::Version
@@ -57,7 +51,6 @@ dependencies:
57
51
  type: :runtime
58
52
  prerelease: false
59
53
  version_requirements: !ruby/object:Gem::Requirement
60
- none: false
61
54
  requirements:
62
55
  - - ~>
63
56
  - !ruby/object:Gem::Version
@@ -65,7 +58,6 @@ dependencies:
65
58
  - !ruby/object:Gem::Dependency
66
59
  name: celluloid
67
60
  requirement: !ruby/object:Gem::Requirement
68
- none: false
69
61
  requirements:
70
62
  - - ~>
71
63
  - !ruby/object:Gem::Version
@@ -73,7 +65,6 @@ dependencies:
73
65
  type: :runtime
74
66
  prerelease: false
75
67
  version_requirements: !ruby/object:Gem::Requirement
76
- none: false
77
68
  requirements:
78
69
  - - ~>
79
70
  - !ruby/object:Gem::Version
@@ -81,39 +72,34 @@ dependencies:
81
72
  - !ruby/object:Gem::Dependency
82
73
  name: countdownlatch
83
74
  requirement: !ruby/object:Gem::Requirement
84
- none: false
85
75
  requirements:
86
- - - ! '>='
76
+ - - '>='
87
77
  - !ruby/object:Gem::Version
88
78
  version: '0'
89
79
  type: :runtime
90
80
  prerelease: false
91
81
  version_requirements: !ruby/object:Gem::Requirement
92
- none: false
93
82
  requirements:
94
- - - ! '>='
83
+ - - '>='
95
84
  - !ruby/object:Gem::Version
96
85
  version: '0'
97
86
  - !ruby/object:Gem::Dependency
98
87
  name: deep_merge
99
88
  requirement: !ruby/object:Gem::Requirement
100
- none: false
101
89
  requirements:
102
- - - ! '>='
90
+ - - '>='
103
91
  - !ruby/object:Gem::Version
104
92
  version: '0'
105
93
  type: :runtime
106
94
  prerelease: false
107
95
  version_requirements: !ruby/object:Gem::Requirement
108
- none: false
109
96
  requirements:
110
- - - ! '>='
97
+ - - '>='
111
98
  - !ruby/object:Gem::Version
112
99
  version: '0'
113
100
  - !ruby/object:Gem::Dependency
114
101
  name: ffi
115
102
  requirement: !ruby/object:Gem::Requirement
116
- none: false
117
103
  requirements:
118
104
  - - ~>
119
105
  - !ruby/object:Gem::Version
@@ -121,7 +107,6 @@ dependencies:
121
107
  type: :runtime
122
108
  prerelease: false
123
109
  version_requirements: !ruby/object:Gem::Requirement
124
- none: false
125
110
  requirements:
126
111
  - - ~>
127
112
  - !ruby/object:Gem::Version
@@ -129,23 +114,20 @@ dependencies:
129
114
  - !ruby/object:Gem::Dependency
130
115
  name: girl_friday
131
116
  requirement: !ruby/object:Gem::Requirement
132
- none: false
133
117
  requirements:
134
- - - ! '>='
118
+ - - '>='
135
119
  - !ruby/object:Gem::Version
136
120
  version: '0'
137
121
  type: :runtime
138
122
  prerelease: false
139
123
  version_requirements: !ruby/object:Gem::Requirement
140
- none: false
141
124
  requirements:
142
- - - ! '>='
125
+ - - '>='
143
126
  - !ruby/object:Gem::Version
144
127
  version: '0'
145
128
  - !ruby/object:Gem::Dependency
146
129
  name: has-guarded-handlers
147
130
  requirement: !ruby/object:Gem::Requirement
148
- none: false
149
131
  requirements:
150
132
  - - ~>
151
133
  - !ruby/object:Gem::Version
@@ -153,7 +135,6 @@ dependencies:
153
135
  type: :runtime
154
136
  prerelease: false
155
137
  version_requirements: !ruby/object:Gem::Requirement
156
- none: false
157
138
  requirements:
158
139
  - - ~>
159
140
  - !ruby/object:Gem::Version
@@ -161,7 +142,6 @@ dependencies:
161
142
  - !ruby/object:Gem::Dependency
162
143
  name: logging
163
144
  requirement: !ruby/object:Gem::Requirement
164
- none: false
165
145
  requirements:
166
146
  - - ~>
167
147
  - !ruby/object:Gem::Version
@@ -169,7 +149,6 @@ dependencies:
169
149
  type: :runtime
170
150
  prerelease: false
171
151
  version_requirements: !ruby/object:Gem::Requirement
172
- none: false
173
152
  requirements:
174
153
  - - ~>
175
154
  - !ruby/object:Gem::Version
@@ -177,23 +156,20 @@ dependencies:
177
156
  - !ruby/object:Gem::Dependency
178
157
  name: pry
179
158
  requirement: !ruby/object:Gem::Requirement
180
- none: false
181
159
  requirements:
182
- - - ! '>='
160
+ - - '>='
183
161
  - !ruby/object:Gem::Version
184
162
  version: '0'
185
163
  type: :runtime
186
164
  prerelease: false
187
165
  version_requirements: !ruby/object:Gem::Requirement
188
- none: false
189
166
  requirements:
190
- - - ! '>='
167
+ - - '>='
191
168
  - !ruby/object:Gem::Version
192
169
  version: '0'
193
170
  - !ruby/object:Gem::Dependency
194
171
  name: punchblock
195
172
  requirement: !ruby/object:Gem::Requirement
196
- none: false
197
173
  requirements:
198
174
  - - ~>
199
175
  - !ruby/object:Gem::Version
@@ -201,7 +177,6 @@ dependencies:
201
177
  type: :runtime
202
178
  prerelease: false
203
179
  version_requirements: !ruby/object:Gem::Requirement
204
- none: false
205
180
  requirements:
206
181
  - - ~>
207
182
  - !ruby/object:Gem::Version
@@ -209,23 +184,20 @@ dependencies:
209
184
  - !ruby/object:Gem::Dependency
210
185
  name: rake
211
186
  requirement: !ruby/object:Gem::Requirement
212
- none: false
213
187
  requirements:
214
- - - ! '>='
188
+ - - '>='
215
189
  - !ruby/object:Gem::Version
216
190
  version: '0'
217
191
  type: :runtime
218
192
  prerelease: false
219
193
  version_requirements: !ruby/object:Gem::Requirement
220
- none: false
221
194
  requirements:
222
- - - ! '>='
195
+ - - '>='
223
196
  - !ruby/object:Gem::Version
224
197
  version: '0'
225
198
  - !ruby/object:Gem::Dependency
226
199
  name: ruby_speech
227
200
  requirement: !ruby/object:Gem::Requirement
228
- none: false
229
201
  requirements:
230
202
  - - ~>
231
203
  - !ruby/object:Gem::Version
@@ -233,7 +205,6 @@ dependencies:
233
205
  type: :runtime
234
206
  prerelease: false
235
207
  version_requirements: !ruby/object:Gem::Requirement
236
- none: false
237
208
  requirements:
238
209
  - - ~>
239
210
  - !ruby/object:Gem::Version
@@ -241,7 +212,6 @@ dependencies:
241
212
  - !ruby/object:Gem::Dependency
242
213
  name: thor
243
214
  requirement: !ruby/object:Gem::Requirement
244
- none: false
245
215
  requirements:
246
216
  - - ~>
247
217
  - !ruby/object:Gem::Version
@@ -249,7 +219,6 @@ dependencies:
249
219
  type: :runtime
250
220
  prerelease: false
251
221
  version_requirements: !ruby/object:Gem::Requirement
252
- none: false
253
222
  requirements:
254
223
  - - ~>
255
224
  - !ruby/object:Gem::Version
@@ -257,7 +226,6 @@ dependencies:
257
226
  - !ruby/object:Gem::Dependency
258
227
  name: aruba
259
228
  requirement: !ruby/object:Gem::Requirement
260
- none: false
261
229
  requirements:
262
230
  - - ~>
263
231
  - !ruby/object:Gem::Version
@@ -265,7 +233,6 @@ dependencies:
265
233
  type: :development
266
234
  prerelease: false
267
235
  version_requirements: !ruby/object:Gem::Requirement
268
- none: false
269
236
  requirements:
270
237
  - - ~>
271
238
  - !ruby/object:Gem::Version
@@ -273,71 +240,62 @@ dependencies:
273
240
  - !ruby/object:Gem::Dependency
274
241
  name: ci_reporter
275
242
  requirement: !ruby/object:Gem::Requirement
276
- none: false
277
243
  requirements:
278
- - - ! '>='
244
+ - - '>='
279
245
  - !ruby/object:Gem::Version
280
246
  version: '0'
281
247
  type: :development
282
248
  prerelease: false
283
249
  version_requirements: !ruby/object:Gem::Requirement
284
- none: false
285
250
  requirements:
286
- - - ! '>='
251
+ - - '>='
287
252
  - !ruby/object:Gem::Version
288
253
  version: '0'
289
254
  - !ruby/object:Gem::Dependency
290
255
  name: cucumber
291
256
  requirement: !ruby/object:Gem::Requirement
292
- none: false
293
257
  requirements:
294
- - - ! '>='
258
+ - - '>='
295
259
  - !ruby/object:Gem::Version
296
260
  version: '0'
297
261
  type: :development
298
262
  prerelease: false
299
263
  version_requirements: !ruby/object:Gem::Requirement
300
- none: false
301
264
  requirements:
302
- - - ! '>='
265
+ - - '>='
303
266
  - !ruby/object:Gem::Version
304
267
  version: '0'
305
268
  - !ruby/object:Gem::Dependency
306
269
  name: guard-cucumber
307
270
  requirement: !ruby/object:Gem::Requirement
308
- none: false
309
271
  requirements:
310
- - - ! '>='
272
+ - - '>='
311
273
  - !ruby/object:Gem::Version
312
274
  version: '0'
313
275
  type: :development
314
276
  prerelease: false
315
277
  version_requirements: !ruby/object:Gem::Requirement
316
- none: false
317
278
  requirements:
318
- - - ! '>='
279
+ - - '>='
319
280
  - !ruby/object:Gem::Version
320
281
  version: '0'
321
282
  - !ruby/object:Gem::Dependency
322
283
  name: guard-rspec
323
284
  requirement: !ruby/object:Gem::Requirement
324
- none: false
325
285
  requirements:
326
- - - ! '>='
286
+ - - '>='
327
287
  - !ruby/object:Gem::Version
328
288
  version: '0'
329
289
  type: :development
330
290
  prerelease: false
331
291
  version_requirements: !ruby/object:Gem::Requirement
332
- none: false
333
292
  requirements:
334
- - - ! '>='
293
+ - - '>='
335
294
  - !ruby/object:Gem::Version
336
295
  version: '0'
337
296
  - !ruby/object:Gem::Dependency
338
297
  name: rspec
339
298
  requirement: !ruby/object:Gem::Requirement
340
- none: false
341
299
  requirements:
342
300
  - - ~>
343
301
  - !ruby/object:Gem::Version
@@ -345,7 +303,6 @@ dependencies:
345
303
  type: :development
346
304
  prerelease: false
347
305
  version_requirements: !ruby/object:Gem::Requirement
348
- none: false
349
306
  requirements:
350
307
  - - ~>
351
308
  - !ruby/object:Gem::Version
@@ -353,65 +310,57 @@ dependencies:
353
310
  - !ruby/object:Gem::Dependency
354
311
  name: ruby_gntp
355
312
  requirement: !ruby/object:Gem::Requirement
356
- none: false
357
313
  requirements:
358
- - - ! '>='
314
+ - - '>='
359
315
  - !ruby/object:Gem::Version
360
316
  version: '0'
361
317
  type: :development
362
318
  prerelease: false
363
319
  version_requirements: !ruby/object:Gem::Requirement
364
- none: false
365
320
  requirements:
366
- - - ! '>='
321
+ - - '>='
367
322
  - !ruby/object:Gem::Version
368
323
  version: '0'
369
324
  - !ruby/object:Gem::Dependency
370
325
  name: simplecov
371
326
  requirement: !ruby/object:Gem::Requirement
372
- none: false
373
327
  requirements:
374
- - - ! '>='
328
+ - - '>='
375
329
  - !ruby/object:Gem::Version
376
330
  version: '0'
377
331
  type: :development
378
332
  prerelease: false
379
333
  version_requirements: !ruby/object:Gem::Requirement
380
- none: false
381
334
  requirements:
382
- - - ! '>='
335
+ - - '>='
383
336
  - !ruby/object:Gem::Version
384
337
  version: '0'
385
338
  - !ruby/object:Gem::Dependency
386
339
  name: simplecov-rcov
387
340
  requirement: !ruby/object:Gem::Requirement
388
- none: false
389
341
  requirements:
390
- - - ! '>='
342
+ - - '>='
391
343
  - !ruby/object:Gem::Version
392
344
  version: '0'
393
345
  type: :development
394
346
  prerelease: false
395
347
  version_requirements: !ruby/object:Gem::Requirement
396
- none: false
397
348
  requirements:
398
- - - ! '>='
349
+ - - '>='
399
350
  - !ruby/object:Gem::Version
400
351
  version: '0'
401
352
  - !ruby/object:Gem::Dependency
402
353
  name: yard
403
354
  requirement: !ruby/object:Gem::Requirement
404
- none: false
405
355
  requirements:
406
- - - ! '>='
356
+ - - '>='
407
357
  - !ruby/object:Gem::Version
408
358
  version: '0'
409
359
  type: :development
410
360
  prerelease: false
411
361
  version_requirements: !ruby/object:Gem::Requirement
412
- none: false
413
362
  requirements:
414
- - - ! '>='
363
+ - - '>='
415
364
  - !ruby/object:Gem::Version
416
365
  version: '0'
417
366
  description: Adhearsion is an open-source telephony development framework
@@ -586,33 +535,26 @@ files:
586
535
  - spec/support/punchblock_mocks.rb
587
536
  homepage: http://adhearsion.com
588
537
  licenses: []
538
+ metadata: {}
589
539
  post_install_message:
590
540
  rdoc_options: []
591
541
  require_paths:
592
542
  - lib
593
543
  required_ruby_version: !ruby/object:Gem::Requirement
594
- none: false
595
544
  requirements:
596
- - - ! '>='
545
+ - - '>='
597
546
  - !ruby/object:Gem::Version
598
547
  version: '0'
599
- segments:
600
- - 0
601
- hash: 1745862243148562605
602
548
  required_rubygems_version: !ruby/object:Gem::Requirement
603
- none: false
604
549
  requirements:
605
- - - ! '>='
550
+ - - '>='
606
551
  - !ruby/object:Gem::Version
607
552
  version: '0'
608
- segments:
609
- - 0
610
- hash: 1745862243148562605
611
553
  requirements: []
612
554
  rubyforge_project:
613
- rubygems_version: 1.8.25
555
+ rubygems_version: 2.0.3
614
556
  signing_key:
615
- specification_version: 3
557
+ specification_version: 4
616
558
  summary: Adhearsion, open-source telephony development framework
617
559
  test_files:
618
560
  - features/app_generator.feature