adhearsion 2.0.0.alpha1 → 2.0.0.alpha2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (57) hide show
  1. data/.gitignore +2 -0
  2. data/.travis.yml +12 -0
  3. data/CHANGELOG.md +17 -0
  4. data/adhearsion.gemspec +4 -3
  5. data/features/app_generator.feature +3 -1
  6. data/features/cli.feature +7 -7
  7. data/features/support/env.rb +46 -0
  8. data/lib/adhearsion.rb +1 -2
  9. data/lib/adhearsion/call.rb +59 -19
  10. data/lib/adhearsion/call_controller.rb +20 -24
  11. data/lib/adhearsion/call_controller/dial.rb +18 -18
  12. data/lib/adhearsion/cli_commands.rb +26 -9
  13. data/lib/adhearsion/configuration.rb +39 -10
  14. data/lib/adhearsion/console.rb +61 -42
  15. data/lib/adhearsion/foundation/libc.rb +13 -0
  16. data/lib/adhearsion/generators/app/app_generator.rb +4 -1
  17. data/lib/adhearsion/generators/app/templates/{Gemfile → Gemfile.erb} +1 -1
  18. data/lib/adhearsion/generators/app/templates/Rakefile +3 -22
  19. data/lib/adhearsion/generators/app/templates/gitignore +7 -0
  20. data/lib/adhearsion/generators/app/templates/lib/simon_game.rb +1 -0
  21. data/lib/adhearsion/generators/app/templates/script/ahn +1 -0
  22. data/lib/adhearsion/initializer.rb +24 -12
  23. data/lib/adhearsion/linux_proc_name.rb +41 -0
  24. data/lib/adhearsion/outbound_call.rb +10 -5
  25. data/lib/adhearsion/plugin.rb +29 -132
  26. data/lib/adhearsion/process.rb +4 -1
  27. data/lib/adhearsion/punchblock_plugin.rb +14 -5
  28. data/lib/adhearsion/punchblock_plugin/initializer.rb +8 -1
  29. data/lib/adhearsion/router/route.rb +1 -3
  30. data/lib/adhearsion/tasks.rb +6 -12
  31. data/lib/adhearsion/tasks/configuration.rb +7 -24
  32. data/lib/adhearsion/tasks/environment.rb +12 -0
  33. data/lib/adhearsion/tasks/plugins.rb +9 -14
  34. data/lib/adhearsion/version.rb +1 -1
  35. data/spec/adhearsion/call_controller/dial_spec.rb +46 -22
  36. data/spec/adhearsion/call_controller_spec.rb +48 -13
  37. data/spec/adhearsion/call_spec.rb +144 -23
  38. data/spec/adhearsion/calls_spec.rb +8 -4
  39. data/spec/adhearsion/console_spec.rb +24 -0
  40. data/spec/adhearsion/initializer/logging_spec.rb +0 -3
  41. data/spec/adhearsion/initializer_spec.rb +52 -37
  42. data/spec/adhearsion/logging_spec.rb +0 -3
  43. data/spec/adhearsion/outbound_call_spec.rb +12 -2
  44. data/spec/adhearsion/plugin_spec.rb +74 -184
  45. data/spec/adhearsion/process_spec.rb +59 -26
  46. data/spec/adhearsion/punchblock_plugin/initializer_spec.rb +3 -4
  47. data/spec/adhearsion/punchblock_plugin_spec.rb +11 -0
  48. data/spec/adhearsion/router/route_spec.rb +37 -6
  49. data/spec/adhearsion_spec.rb +31 -8
  50. data/spec/spec_helper.rb +14 -0
  51. data/spec/support/call_controller_test_helpers.rb +2 -2
  52. data/spec/support/logging_helpers.rb +2 -0
  53. metadata +85 -68
  54. data/lib/adhearsion/dialplan_controller.rb +0 -9
  55. data/lib/adhearsion/foundation/synchronized_hash.rb +0 -93
  56. data/lib/adhearsion/plugin/methods_container.rb +0 -6
  57. data/spec/adhearsion/dialplan_controller_spec.rb +0 -26
@@ -1,34 +1,67 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe Adhearsion::Process do
4
- before :each do
5
- Adhearsion::Process.reset
6
- end
3
+ module Adhearsion
4
+ describe Adhearsion::Process do
5
+ before :each do
6
+ Adhearsion::Process.reset
7
+ end
7
8
 
8
- it 'should trigger :stop_requested events on #shutdown' do
9
- flexmock(Adhearsion::Events).should_receive(:trigger_immediately).once.with(:stop_requested)
10
- Adhearsion::Process.booted
11
- Adhearsion::Process.shutdown
12
- end
9
+ it 'should trigger :stop_requested events on #shutdown' do
10
+ flexmock(Events).should_receive(:trigger_immediately).once.with(:stop_requested)
11
+ Adhearsion::Process.booted
12
+ Adhearsion::Process.shutdown
13
+ end
13
14
 
14
- it '#stop_when_zero_calls should wait until the list of active calls reaches 0' do
15
- pending
16
- calls = ThreadSafeArray.new
17
- 3.times do
18
- fake_call = Object.new
19
- flexmock(fake_call).should_receive(:hangup).once
20
- calls << fake_call
15
+ it '#stop_when_zero_calls should wait until the list of active calls reaches 0' do
16
+ pending
17
+ calls = ThreadSafeArray.new
18
+ 3.times do
19
+ fake_call = Object.new
20
+ flexmock(fake_call).should_receive(:hangup).once
21
+ calls << fake_call
22
+ end
23
+ flexmock(Adhearsion).should_receive(:active_calls).and_return calls
24
+ flexmock(Adhearsion::Process.instance).should_receive(:final_shutdown).once
25
+ calls = []
26
+ 3.times { calls << Thread.new { sleep 1; calls.pop } }
27
+ Adhearsion::Process.stop_when_zero_calls
28
+ calls.each { |thread| thread.join }
21
29
  end
22
- flexmock(Adhearsion).should_receive(:active_calls).and_return calls
23
- flexmock(Adhearsion::Process.instance).should_receive(:final_shutdown).once
24
- calls = []
25
- 3.times { calls << Thread.new { sleep 1; calls.pop } }
26
- Adhearsion::Process.stop_when_zero_calls
27
- calls.each { |thread| thread.join }
28
- end
29
30
 
30
- it 'should terminate the process immediately on #force_stop' do
31
- flexmock(::Process).should_receive(:exit).with(1).once.and_return true
32
- Adhearsion::Process.force_stop
31
+ it 'should terminate the process immediately on #force_stop' do
32
+ flexmock(::Process).should_receive(:exit).with(1).once.and_return true
33
+ Adhearsion::Process.force_stop
34
+ end
35
+
36
+ describe "#final_shutdown" do
37
+ it "should hang up active calls" do
38
+ 3.times do
39
+ fake_call = flexmock Object.new, :id => rand
40
+ flexmock(fake_call).should_receive(:hangup).once
41
+ Adhearsion.active_calls << fake_call
42
+ end
43
+
44
+ Adhearsion::Process.final_shutdown
45
+
46
+ Adhearsion.active_calls.clear!
47
+ end
48
+
49
+ it "should trigger shutdown handlers synchronously" do
50
+ shutdown_value = []
51
+
52
+ Events.shutdown { shutdown_value << :foo }
53
+ Events.shutdown { shutdown_value << :bar }
54
+ Events.shutdown { shutdown_value << :baz }
55
+
56
+ Adhearsion::Process.final_shutdown
57
+
58
+ shutdown_value.should == [:foo, :bar, :baz]
59
+ end
60
+
61
+ it "should stop the console" do
62
+ flexmock(Console).should_receive(:stop).once
63
+ Adhearsion::Process.final_shutdown
64
+ end
65
+ end
33
66
  end
34
67
  end
@@ -45,10 +45,9 @@ module Adhearsion
45
45
  Events.refresh!
46
46
  end
47
47
 
48
- let(:call_id) { rand }
49
- let(:offer) { ::Punchblock::Event::Offer.new.tap { |o| o.call_id = call_id } }
50
- let(:mock_call) { flexmock('Call', :id => call_id).tap { |call| call.should_ignore_missing } }
51
- let(:mock_manager) { flexmock 'a mock dialplan manager' }
48
+ let(:call_id) { rand }
49
+ let(:offer) { ::Punchblock::Event::Offer.new.tap { |o| o.call_id = call_id } }
50
+ let(:mock_call) { flexmock('Call', :id => call_id).tap { |call| call.should_ignore_missing } }
52
51
 
53
52
  describe "starts the client with the default values" do
54
53
  subject { initialize_punchblock }
@@ -0,0 +1,11 @@
1
+ require 'spec_helper'
2
+
3
+ module Adhearsion
4
+ describe PunchblockPlugin do
5
+ it "should make the client accessible from the Initializer" do
6
+ PunchblockPlugin::Initializer.client = :foo
7
+ PunchblockPlugin.client.should be :foo
8
+ PunchblockPlugin::Initializer.client = nil
9
+ end
10
+ end
11
+ end
@@ -49,18 +49,49 @@ module Adhearsion
49
49
  ]
50
50
  end
51
51
 
52
+ let :offer do
53
+ Punchblock::Event::Offer.new :to => to, :from => from
54
+ end
55
+
56
+ let(:call) { Adhearsion::Call.new offer }
57
+
52
58
  context "with a call from fred to paul" do
53
- let(:call) { flexmock 'Adhearsion::Call', :from => 'fred', :to => 'paul' }
59
+ let(:from) { 'fred' }
60
+ let(:to) { 'paul' }
54
61
  it { should_match_the_call }
55
62
  end
56
63
 
57
64
  context "with a call from fred to frank" do
58
- let(:call) { flexmock 'Adhearsion::Call', :from => 'fred', :to => 'frank' }
65
+ let(:from) { 'fred' }
66
+ let(:to) { 'frank' }
59
67
  it { should_not_match_the_call }
60
68
  end
61
69
 
62
70
  context "with a call from frank to paul" do
63
- let(:call) { flexmock 'Adhearsion::Call', :from => 'frank', :to => 'paul' }
71
+ let(:from) { 'frank' }
72
+ let(:to) { 'paul' }
73
+ it { should_not_match_the_call }
74
+ end
75
+ end
76
+
77
+ describe "matching calls with the variable :foo=:bar" do
78
+ let :guards do
79
+ [[:[], :foo] => :bar]
80
+ end
81
+
82
+ let(:call) { Adhearsion::Call.new }
83
+
84
+ context "with :foo=:bar" do
85
+ before { call[:foo] = :bar }
86
+ it { should_match_the_call }
87
+ end
88
+
89
+ context "with :foo=:baz" do
90
+ before { call[:foo] = :baz }
91
+ it { should_not_match_the_call }
92
+ end
93
+
94
+ context "with :foo unset" do
64
95
  it { should_not_match_the_call }
65
96
  end
66
97
  end
@@ -86,9 +117,9 @@ module Adhearsion
86
117
  end
87
118
  end
88
119
 
89
- it "should instruct the call to use an instance of DialplanController with the correct block" do
90
- flexmock(call).should_receive(:execute_controller).once.with(DialplanController).and_return do |controller|
91
- controller.dialplan.call.should == :foobar
120
+ it "should instruct the call to use a CallController with the correct block" do
121
+ flexmock(call).should_receive(:execute_controller).once.with(CallController).and_return do |controller|
122
+ controller.block.call.should == :foobar
92
123
  end
93
124
  route.dispatcher.call call
94
125
  end
@@ -1,7 +1,19 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe Adhearsion do
4
- describe "while accessing the config method" do
4
+ describe "#ahn_root=" do
5
+ it "should update properly the config root variable" do
6
+ Adhearsion.ahn_root = "./"
7
+ Adhearsion.config[:platform].root.should == Dir.getwd
8
+ end
9
+
10
+ it "should update properly the config root variable when path is nil" do
11
+ Adhearsion.ahn_root = nil
12
+ Adhearsion.config[:platform].root.should be_nil
13
+ end
14
+ end
15
+
16
+ describe "#config" do
5
17
  it "should return a Configuration instance" do
6
18
  subject.config.should be_instance_of Adhearsion::Configuration
7
19
  end
@@ -15,6 +27,13 @@ describe Adhearsion do
15
27
  end
16
28
  end
17
29
 
30
+ describe "#environments" do
31
+ it "should be the collection of valid environments" do
32
+ Adhearsion.config.valid_environments << :foo
33
+ Adhearsion.environments.should include :foo
34
+ end
35
+ end
36
+
18
37
  describe "#router" do
19
38
  its(:router) { should be_a Adhearsion::Router }
20
39
 
@@ -32,15 +51,19 @@ describe Adhearsion do
32
51
  end
33
52
  end
34
53
 
35
- describe "while accessing the ahn_root= method" do
36
- it "should update properly the config root variable" do
37
- Adhearsion.ahn_root = "./"
38
- Adhearsion.config[:platform].root.should == Dir.getwd
54
+ describe "#active_calls" do
55
+ it "should be a calls collection" do
56
+ Adhearsion.active_calls.should be_a Adhearsion::Calls
39
57
  end
40
58
 
41
- it "should update properly the config root variable when path is nil" do
42
- Adhearsion.ahn_root = nil
43
- Adhearsion.config[:platform].root.should be_nil
59
+ it "should return the same instance each time" do
60
+ Adhearsion.active_calls.should be Adhearsion.active_calls
61
+ end
62
+ end
63
+
64
+ describe "#status" do
65
+ it "should be the process status name" do
66
+ Adhearsion.status.should == :booting
44
67
  end
45
68
  end
46
69
  end
@@ -45,3 +45,17 @@ Adhearsion::Events.exeption do |e|
45
45
  end
46
46
 
47
47
  Adhearsion::Logging.silence!
48
+
49
+
50
+ # Test modules for #mixin methods
51
+ module TestBiscuit
52
+ def throwadogabone
53
+ true
54
+ end
55
+ end
56
+
57
+ module MarmaladeIsBetterThanJam
58
+ def sobittersweet
59
+ true
60
+ end
61
+ end
@@ -4,6 +4,7 @@ module CallControllerTestHelpers
4
4
  def self.included(test_case)
5
5
  test_case.let(:call_id) { rand }
6
6
  test_case.let(:call) { Adhearsion::Call.new }
7
+ test_case.let(:block) { nil }
7
8
 
8
9
  test_case.subject do
9
10
  case test_case.describes
@@ -11,11 +12,10 @@ module CallControllerTestHelpers
11
12
  test_case.describes
12
13
  when Module
13
14
  Class.new Adhearsion::CallController
14
- end.new call, :doo => :dah
15
+ end.new call, :doo => :dah, &block
15
16
  end
16
17
 
17
18
  test_case.before do
18
- flexmock Adhearsion::Plugin, :methods_scope => {:dialplan => Module.new { def foo; end}}
19
19
  flexmock subject
20
20
  flexmock call, :write_command => true, :id => call_id
21
21
  end
@@ -0,0 +1,2 @@
1
+ Foo = Class.new
2
+ Foo::Bar = Class.new Foo
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: adhearsion
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.0.alpha1
4
+ version: 2.0.0.alpha2
5
5
  prerelease: 6
6
6
  platform: ruby
7
7
  authors:
@@ -12,11 +12,11 @@ authors:
12
12
  autorequire:
13
13
  bindir: bin
14
14
  cert_chain: []
15
- date: 2012-01-17 00:00:00.000000000 Z
15
+ date: 2012-01-30 00:00:00.000000000 Z
16
16
  dependencies:
17
17
  - !ruby/object:Gem::Dependency
18
18
  name: bundler
19
- requirement: &2157338940 !ruby/object:Gem::Requirement
19
+ requirement: &2156512600 !ruby/object:Gem::Requirement
20
20
  none: false
21
21
  requirements:
22
22
  - - ! '>='
@@ -24,21 +24,21 @@ dependencies:
24
24
  version: 1.0.10
25
25
  type: :runtime
26
26
  prerelease: false
27
- version_requirements: *2157338940
27
+ version_requirements: *2156512600
28
28
  - !ruby/object:Gem::Dependency
29
29
  name: punchblock
30
- requirement: &2157338400 !ruby/object:Gem::Requirement
30
+ requirement: &2156510520 !ruby/object:Gem::Requirement
31
31
  none: false
32
32
  requirements:
33
33
  - - ! '>='
34
34
  - !ruby/object:Gem::Version
35
- version: 0.8.3
35
+ version: 0.9.1
36
36
  type: :runtime
37
37
  prerelease: false
38
- version_requirements: *2157338400
38
+ version_requirements: *2156510520
39
39
  - !ruby/object:Gem::Dependency
40
40
  name: logging
41
- requirement: &2157337900 !ruby/object:Gem::Requirement
41
+ requirement: &2156507840 !ruby/object:Gem::Requirement
42
42
  none: false
43
43
  requirements:
44
44
  - - ! '>='
@@ -46,10 +46,10 @@ dependencies:
46
46
  version: 1.6.1
47
47
  type: :runtime
48
48
  prerelease: false
49
- version_requirements: *2157337900
49
+ version_requirements: *2156507840
50
50
  - !ruby/object:Gem::Dependency
51
- name: loquacious
52
- requirement: &2157337400 !ruby/object:Gem::Requirement
51
+ name: adhearsion-loquacious
52
+ requirement: &2156520680 !ruby/object:Gem::Requirement
53
53
  none: false
54
54
  requirements:
55
55
  - - ! '>='
@@ -57,10 +57,10 @@ dependencies:
57
57
  version: 1.9.0
58
58
  type: :runtime
59
59
  prerelease: false
60
- version_requirements: *2157337400
60
+ version_requirements: *2156520680
61
61
  - !ruby/object:Gem::Dependency
62
62
  name: activesupport
63
- requirement: &2157336880 !ruby/object:Gem::Requirement
63
+ requirement: &2156519300 !ruby/object:Gem::Requirement
64
64
  none: false
65
65
  requirements:
66
66
  - - ! '>='
@@ -68,10 +68,10 @@ dependencies:
68
68
  version: 3.0.10
69
69
  type: :runtime
70
70
  prerelease: false
71
- version_requirements: *2157336880
71
+ version_requirements: *2156519300
72
72
  - !ruby/object:Gem::Dependency
73
73
  name: i18n
74
- requirement: &2157336420 !ruby/object:Gem::Requirement
74
+ requirement: &2156517360 !ruby/object:Gem::Requirement
75
75
  none: false
76
76
  requirements:
77
77
  - - ! '>='
@@ -79,10 +79,10 @@ dependencies:
79
79
  version: 0.5.0
80
80
  type: :runtime
81
81
  prerelease: false
82
- version_requirements: *2157336420
82
+ version_requirements: *2156517360
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: json
85
- requirement: &2157336020 !ruby/object:Gem::Requirement
85
+ requirement: &2156515880 !ruby/object:Gem::Requirement
86
86
  none: false
87
87
  requirements:
88
88
  - - ! '>='
@@ -90,10 +90,10 @@ dependencies:
90
90
  version: '0'
91
91
  type: :runtime
92
92
  prerelease: false
93
- version_requirements: *2157336020
93
+ version_requirements: *2156515880
94
94
  - !ruby/object:Gem::Dependency
95
95
  name: thor
96
- requirement: &2157335540 !ruby/object:Gem::Requirement
96
+ requirement: &2156515300 !ruby/object:Gem::Requirement
97
97
  none: false
98
98
  requirements:
99
99
  - - ! '>='
@@ -101,10 +101,10 @@ dependencies:
101
101
  version: '0'
102
102
  type: :runtime
103
103
  prerelease: false
104
- version_requirements: *2157335540
104
+ version_requirements: *2156515300
105
105
  - !ruby/object:Gem::Dependency
106
106
  name: rake
107
- requirement: &2157335120 !ruby/object:Gem::Requirement
107
+ requirement: &2156513900 !ruby/object:Gem::Requirement
108
108
  none: false
109
109
  requirements:
110
110
  - - ! '>='
@@ -112,10 +112,10 @@ dependencies:
112
112
  version: '0'
113
113
  type: :runtime
114
114
  prerelease: false
115
- version_requirements: *2157335120
115
+ version_requirements: *2156513900
116
116
  - !ruby/object:Gem::Dependency
117
117
  name: pry
118
- requirement: &2157334680 !ruby/object:Gem::Requirement
118
+ requirement: &2156526580 !ruby/object:Gem::Requirement
119
119
  none: false
120
120
  requirements:
121
121
  - - ! '>='
@@ -123,10 +123,10 @@ dependencies:
123
123
  version: '0'
124
124
  type: :runtime
125
125
  prerelease: false
126
- version_requirements: *2157334680
126
+ version_requirements: *2156526580
127
127
  - !ruby/object:Gem::Dependency
128
128
  name: uuid
129
- requirement: &2157334240 !ruby/object:Gem::Requirement
129
+ requirement: &2156524260 !ruby/object:Gem::Requirement
130
130
  none: false
131
131
  requirements:
132
132
  - - ! '>='
@@ -134,10 +134,10 @@ dependencies:
134
134
  version: '0'
135
135
  type: :runtime
136
136
  prerelease: false
137
- version_requirements: *2157334240
137
+ version_requirements: *2156524260
138
138
  - !ruby/object:Gem::Dependency
139
139
  name: future-resource
140
- requirement: &2157333700 !ruby/object:Gem::Requirement
140
+ requirement: &2156522060 !ruby/object:Gem::Requirement
141
141
  none: false
142
142
  requirements:
143
143
  - - ! '>='
@@ -145,10 +145,10 @@ dependencies:
145
145
  version: 0.0.2
146
146
  type: :runtime
147
147
  prerelease: false
148
- version_requirements: *2157333700
148
+ version_requirements: *2156522060
149
149
  - !ruby/object:Gem::Dependency
150
150
  name: ruby_speech
151
- requirement: &2157333160 !ruby/object:Gem::Requirement
151
+ requirement: &2156535940 !ruby/object:Gem::Requirement
152
152
  none: false
153
153
  requirements:
154
154
  - - ! '>='
@@ -156,10 +156,10 @@ dependencies:
156
156
  version: 0.4.0
157
157
  type: :runtime
158
158
  prerelease: false
159
- version_requirements: *2157333160
159
+ version_requirements: *2156535940
160
160
  - !ruby/object:Gem::Dependency
161
161
  name: countdownlatch
162
- requirement: &2157332780 !ruby/object:Gem::Requirement
162
+ requirement: &2156531620 !ruby/object:Gem::Requirement
163
163
  none: false
164
164
  requirements:
165
165
  - - ! '>='
@@ -167,21 +167,21 @@ dependencies:
167
167
  version: '0'
168
168
  type: :runtime
169
169
  prerelease: false
170
- version_requirements: *2157332780
170
+ version_requirements: *2156531620
171
171
  - !ruby/object:Gem::Dependency
172
172
  name: has-guarded-handlers
173
- requirement: &2157332180 !ruby/object:Gem::Requirement
173
+ requirement: &2156548760 !ruby/object:Gem::Requirement
174
174
  none: false
175
175
  requirements:
176
176
  - - ! '>='
177
177
  - !ruby/object:Gem::Version
178
- version: 0.1.1
178
+ version: 1.1.0
179
179
  type: :runtime
180
180
  prerelease: false
181
- version_requirements: *2157332180
181
+ version_requirements: *2156548760
182
182
  - !ruby/object:Gem::Dependency
183
183
  name: girl_friday
184
- requirement: &2157331740 !ruby/object:Gem::Requirement
184
+ requirement: &2156546880 !ruby/object:Gem::Requirement
185
185
  none: false
186
186
  requirements:
187
187
  - - ! '>='
@@ -189,10 +189,21 @@ dependencies:
189
189
  version: '0'
190
190
  type: :runtime
191
191
  prerelease: false
192
- version_requirements: *2157331740
192
+ version_requirements: *2156546880
193
+ - !ruby/object:Gem::Dependency
194
+ name: ffi
195
+ requirement: &2156544980 !ruby/object:Gem::Requirement
196
+ none: false
197
+ requirements:
198
+ - - ! '>='
199
+ - !ruby/object:Gem::Version
200
+ version: 1.0.11
201
+ type: :runtime
202
+ prerelease: false
203
+ version_requirements: *2156544980
193
204
  - !ruby/object:Gem::Dependency
194
205
  name: rspec
195
- requirement: &2157348260 !ruby/object:Gem::Requirement
206
+ requirement: &2156543340 !ruby/object:Gem::Requirement
196
207
  none: false
197
208
  requirements:
198
209
  - - ~>
@@ -200,10 +211,10 @@ dependencies:
200
211
  version: 2.7.0
201
212
  type: :development
202
213
  prerelease: false
203
- version_requirements: *2157348260
214
+ version_requirements: *2156543340
204
215
  - !ruby/object:Gem::Dependency
205
216
  name: flexmock
206
- requirement: &2157347840 !ruby/object:Gem::Requirement
217
+ requirement: &2156557680 !ruby/object:Gem::Requirement
207
218
  none: false
208
219
  requirements:
209
220
  - - ! '>='
@@ -211,10 +222,10 @@ dependencies:
211
222
  version: '0'
212
223
  type: :development
213
224
  prerelease: false
214
- version_requirements: *2157347840
225
+ version_requirements: *2156557680
215
226
  - !ruby/object:Gem::Dependency
216
227
  name: activerecord
217
- requirement: &2157347260 !ruby/object:Gem::Requirement
228
+ requirement: &2156555880 !ruby/object:Gem::Requirement
218
229
  none: false
219
230
  requirements:
220
231
  - - ! '>='
@@ -222,10 +233,10 @@ dependencies:
222
233
  version: 3.0.10
223
234
  type: :development
224
235
  prerelease: false
225
- version_requirements: *2157347260
236
+ version_requirements: *2156555880
226
237
  - !ruby/object:Gem::Dependency
227
238
  name: simplecov
228
- requirement: &2157346840 !ruby/object:Gem::Requirement
239
+ requirement: &2156554720 !ruby/object:Gem::Requirement
229
240
  none: false
230
241
  requirements:
231
242
  - - ! '>='
@@ -233,10 +244,10 @@ dependencies:
233
244
  version: '0'
234
245
  type: :development
235
246
  prerelease: false
236
- version_requirements: *2157346840
247
+ version_requirements: *2156554720
237
248
  - !ruby/object:Gem::Dependency
238
249
  name: simplecov-rcov
239
- requirement: &2157346360 !ruby/object:Gem::Requirement
250
+ requirement: &2156553700 !ruby/object:Gem::Requirement
240
251
  none: false
241
252
  requirements:
242
253
  - - ! '>='
@@ -244,10 +255,10 @@ dependencies:
244
255
  version: '0'
245
256
  type: :development
246
257
  prerelease: false
247
- version_requirements: *2157346360
258
+ version_requirements: *2156553700
248
259
  - !ruby/object:Gem::Dependency
249
260
  name: ci_reporter
250
- requirement: &2157345940 !ruby/object:Gem::Requirement
261
+ requirement: &2156551580 !ruby/object:Gem::Requirement
251
262
  none: false
252
263
  requirements:
253
264
  - - ! '>='
@@ -255,10 +266,10 @@ dependencies:
255
266
  version: '0'
256
267
  type: :development
257
268
  prerelease: false
258
- version_requirements: *2157345940
269
+ version_requirements: *2156551580
259
270
  - !ruby/object:Gem::Dependency
260
271
  name: yard
261
- requirement: &2157345500 !ruby/object:Gem::Requirement
272
+ requirement: &2156550720 !ruby/object:Gem::Requirement
262
273
  none: false
263
274
  requirements:
264
275
  - - ! '>='
@@ -266,10 +277,10 @@ dependencies:
266
277
  version: '0'
267
278
  type: :development
268
279
  prerelease: false
269
- version_requirements: *2157345500
280
+ version_requirements: *2156550720
270
281
  - !ruby/object:Gem::Dependency
271
282
  name: guard-rspec
272
- requirement: &2157345080 !ruby/object:Gem::Requirement
283
+ requirement: &2156568080 !ruby/object:Gem::Requirement
273
284
  none: false
274
285
  requirements:
275
286
  - - ! '>='
@@ -277,10 +288,10 @@ dependencies:
277
288
  version: '0'
278
289
  type: :development
279
290
  prerelease: false
280
- version_requirements: *2157345080
291
+ version_requirements: *2156568080
281
292
  - !ruby/object:Gem::Dependency
282
293
  name: guard-cucumber
283
- requirement: &2157344660 !ruby/object:Gem::Requirement
294
+ requirement: &2156562800 !ruby/object:Gem::Requirement
284
295
  none: false
285
296
  requirements:
286
297
  - - ! '>='
@@ -288,10 +299,10 @@ dependencies:
288
299
  version: '0'
289
300
  type: :development
290
301
  prerelease: false
291
- version_requirements: *2157344660
302
+ version_requirements: *2156562800
292
303
  - !ruby/object:Gem::Dependency
293
304
  name: ruby_gntp
294
- requirement: &2157344220 !ruby/object:Gem::Requirement
305
+ requirement: &2156587720 !ruby/object:Gem::Requirement
295
306
  none: false
296
307
  requirements:
297
308
  - - ! '>='
@@ -299,10 +310,10 @@ dependencies:
299
310
  version: '0'
300
311
  type: :development
301
312
  prerelease: false
302
- version_requirements: *2157344220
313
+ version_requirements: *2156587720
303
314
  - !ruby/object:Gem::Dependency
304
315
  name: cucumber
305
- requirement: &2157343800 !ruby/object:Gem::Requirement
316
+ requirement: &2156585660 !ruby/object:Gem::Requirement
306
317
  none: false
307
318
  requirements:
308
319
  - - ! '>='
@@ -310,10 +321,10 @@ dependencies:
310
321
  version: '0'
311
322
  type: :development
312
323
  prerelease: false
313
- version_requirements: *2157343800
324
+ version_requirements: *2156585660
314
325
  - !ruby/object:Gem::Dependency
315
326
  name: aruba
316
- requirement: &2157343380 !ruby/object:Gem::Requirement
327
+ requirement: &2156584040 !ruby/object:Gem::Requirement
317
328
  none: false
318
329
  requirements:
319
330
  - - ! '>='
@@ -321,7 +332,7 @@ dependencies:
321
332
  version: '0'
322
333
  type: :development
323
334
  prerelease: false
324
- version_requirements: *2157343380
335
+ version_requirements: *2156584040
325
336
  description: Adhearsion is an open-source telephony development framework
326
337
  email: dev&Adhearsion.com
327
338
  executables:
@@ -331,6 +342,7 @@ extra_rdoc_files: []
331
342
  files:
332
343
  - .gitignore
333
344
  - .rspec
345
+ - .travis.yml
334
346
  - CHANGELOG.md
335
347
  - EVENTS
336
348
  - Gemfile
@@ -362,27 +374,28 @@ files:
362
374
  - lib/adhearsion/cli_commands.rb
363
375
  - lib/adhearsion/configuration.rb
364
376
  - lib/adhearsion/console.rb
365
- - lib/adhearsion/dialplan_controller.rb
366
377
  - lib/adhearsion/events.rb
367
378
  - lib/adhearsion/foundation/all.rb
368
379
  - lib/adhearsion/foundation/custom_daemonizer.rb
369
380
  - lib/adhearsion/foundation/exception_handler.rb
381
+ - lib/adhearsion/foundation/libc.rb
370
382
  - lib/adhearsion/foundation/object.rb
371
- - lib/adhearsion/foundation/synchronized_hash.rb
372
383
  - lib/adhearsion/foundation/thread_safety.rb
373
384
  - lib/adhearsion/generators.rb
374
385
  - lib/adhearsion/generators/app/USAGE
375
386
  - lib/adhearsion/generators/app/app_generator.rb
376
- - lib/adhearsion/generators/app/templates/Gemfile
387
+ - lib/adhearsion/generators/app/templates/Gemfile.erb
377
388
  - lib/adhearsion/generators/app/templates/Procfile
378
389
  - lib/adhearsion/generators/app/templates/README.md
379
390
  - lib/adhearsion/generators/app/templates/Rakefile
380
391
  - lib/adhearsion/generators/app/templates/config/adhearsion.rb
381
392
  - lib/adhearsion/generators/app/templates/config/environment.rb
393
+ - lib/adhearsion/generators/app/templates/gitignore
382
394
  - lib/adhearsion/generators/app/templates/lib/simon_game.rb
383
395
  - lib/adhearsion/generators/app/templates/script/ahn
384
396
  - lib/adhearsion/initializer.rb
385
397
  - lib/adhearsion/initializer/logging.rb
398
+ - lib/adhearsion/linux_proc_name.rb
386
399
  - lib/adhearsion/logging.rb
387
400
  - lib/adhearsion/menu_dsl.rb
388
401
  - lib/adhearsion/menu_dsl/calculated_match.rb
@@ -397,7 +410,6 @@ files:
397
410
  - lib/adhearsion/plugin.rb
398
411
  - lib/adhearsion/plugin/collection.rb
399
412
  - lib/adhearsion/plugin/initializer.rb
400
- - lib/adhearsion/plugin/methods_container.rb
401
413
  - lib/adhearsion/process.rb
402
414
  - lib/adhearsion/punchblock_plugin.rb
403
415
  - lib/adhearsion/punchblock_plugin/initializer.rb
@@ -406,6 +418,7 @@ files:
406
418
  - lib/adhearsion/script_ahn_loader.rb
407
419
  - lib/adhearsion/tasks.rb
408
420
  - lib/adhearsion/tasks/configuration.rb
421
+ - lib/adhearsion/tasks/environment.rb
409
422
  - lib/adhearsion/tasks/plugins.rb
410
423
  - lib/adhearsion/tasks/testing.rb
411
424
  - lib/adhearsion/version.rb
@@ -418,7 +431,7 @@ files:
418
431
  - spec/adhearsion/call_spec.rb
419
432
  - spec/adhearsion/calls_spec.rb
420
433
  - spec/adhearsion/configuration_spec.rb
421
- - spec/adhearsion/dialplan_controller_spec.rb
434
+ - spec/adhearsion/console_spec.rb
422
435
  - spec/adhearsion/events_spec.rb
423
436
  - spec/adhearsion/initializer/logging_spec.rb
424
437
  - spec/adhearsion/initializer_spec.rb
@@ -436,12 +449,14 @@ files:
436
449
  - spec/adhearsion/plugin_spec.rb
437
450
  - spec/adhearsion/process_spec.rb
438
451
  - spec/adhearsion/punchblock_plugin/initializer_spec.rb
452
+ - spec/adhearsion/punchblock_plugin_spec.rb
439
453
  - spec/adhearsion/router/route_spec.rb
440
454
  - spec/adhearsion/router_spec.rb
441
455
  - spec/adhearsion_spec.rb
442
456
  - spec/spec_helper.rb
443
457
  - spec/support/call_controller_test_helpers.rb
444
458
  - spec/support/initializer_stubs.rb
459
+ - spec/support/logging_helpers.rb
445
460
  - spec/support/punchblock_mocks.rb
446
461
  homepage: http://adhearsion.com
447
462
  licenses: []
@@ -457,7 +472,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
457
472
  version: '0'
458
473
  segments:
459
474
  - 0
460
- hash: -364475193702133580
475
+ hash: -2359996897687755183
461
476
  required_rubygems_version: !ruby/object:Gem::Requirement
462
477
  none: false
463
478
  requirements:
@@ -487,7 +502,7 @@ test_files:
487
502
  - spec/adhearsion/call_spec.rb
488
503
  - spec/adhearsion/calls_spec.rb
489
504
  - spec/adhearsion/configuration_spec.rb
490
- - spec/adhearsion/dialplan_controller_spec.rb
505
+ - spec/adhearsion/console_spec.rb
491
506
  - spec/adhearsion/events_spec.rb
492
507
  - spec/adhearsion/initializer/logging_spec.rb
493
508
  - spec/adhearsion/initializer_spec.rb
@@ -505,11 +520,13 @@ test_files:
505
520
  - spec/adhearsion/plugin_spec.rb
506
521
  - spec/adhearsion/process_spec.rb
507
522
  - spec/adhearsion/punchblock_plugin/initializer_spec.rb
523
+ - spec/adhearsion/punchblock_plugin_spec.rb
508
524
  - spec/adhearsion/router/route_spec.rb
509
525
  - spec/adhearsion/router_spec.rb
510
526
  - spec/adhearsion_spec.rb
511
527
  - spec/spec_helper.rb
512
528
  - spec/support/call_controller_test_helpers.rb
513
529
  - spec/support/initializer_stubs.rb
530
+ - spec/support/logging_helpers.rb
514
531
  - spec/support/punchblock_mocks.rb
515
532
  has_rdoc: