adhearsion 2.4.0 → 2.5.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.
Files changed (63) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +3 -3
  3. data/CHANGELOG.md +29 -0
  4. data/Gemfile +0 -2
  5. data/Guardfile +2 -2
  6. data/README.markdown +3 -6
  7. data/Rakefile +1 -1
  8. data/adhearsion.gemspec +7 -2
  9. data/features/cli_create.feature +85 -7
  10. data/features/plugin_generator.feature +4 -0
  11. data/features/step_definitions/app_generator_steps.rb +8 -1
  12. data/lib/adhearsion.rb +6 -3
  13. data/lib/adhearsion/call.rb +101 -30
  14. data/lib/adhearsion/call_controller.rb +40 -12
  15. data/lib/adhearsion/call_controller/dial.rb +119 -36
  16. data/lib/adhearsion/call_controller/input.rb +11 -5
  17. data/lib/adhearsion/call_controller/output.rb +47 -33
  18. data/lib/adhearsion/call_controller/output/async_player.rb +3 -2
  19. data/lib/adhearsion/call_controller/output/formatter.rb +7 -2
  20. data/lib/adhearsion/call_controller/output/player.rb +2 -2
  21. data/lib/adhearsion/call_controller/record.rb +16 -13
  22. data/lib/adhearsion/call_controller/utility.rb +3 -3
  23. data/lib/adhearsion/calls.rb +21 -8
  24. data/lib/adhearsion/cli_commands/ahn_command.rb +1 -0
  25. data/lib/adhearsion/configuration.rb +2 -2
  26. data/lib/adhearsion/console.rb +3 -2
  27. data/lib/adhearsion/generators.rb +7 -9
  28. data/lib/adhearsion/generators/app/app_generator.rb +12 -2
  29. data/lib/adhearsion/generators/app/templates/Gemfile.erb +7 -9
  30. data/lib/adhearsion/generators/app/templates/README.md +0 -19
  31. data/lib/adhearsion/generators/app/templates/adhearsion.erb +37 -0
  32. data/lib/adhearsion/generators/app/templates/config/environment.rb +6 -1
  33. data/lib/adhearsion/generators/app/templates/events.erb +18 -0
  34. data/lib/adhearsion/generators/app/templates/routes.erb +19 -0
  35. data/lib/adhearsion/generators/app/templates/{lib/simon_game.rb → simon_game.rb} +0 -0
  36. data/lib/adhearsion/generators/app/templates/{spec/call_controllers/simon_game_spec.rb → simon_game_spec.rb} +0 -0
  37. data/lib/adhearsion/generators/controller/controller_generator.rb +2 -2
  38. data/lib/adhearsion/generators/controller/templates/lib/{controller.rb → controller.rb.erb} +0 -0
  39. data/lib/adhearsion/generators/controller/templates/spec/{controller_spec.rb → controller_spec.rb.erb} +0 -0
  40. data/lib/adhearsion/generators/plugin/plugin_generator.rb +16 -15
  41. data/lib/adhearsion/generators/plugin/templates/gitignore +17 -0
  42. data/lib/adhearsion/generators/plugin/templates/spec/plugin-template/controller_methods_spec.rb.tt +1 -1
  43. data/lib/adhearsion/initializer.rb +14 -2
  44. data/lib/adhearsion/logging.rb +1 -0
  45. data/lib/adhearsion/outbound_call.rb +3 -7
  46. data/lib/adhearsion/punchblock_plugin/initializer.rb +3 -2
  47. data/lib/adhearsion/router/openended_route.rb +1 -1
  48. data/lib/adhearsion/router/route.rb +4 -3
  49. data/lib/adhearsion/version.rb +1 -1
  50. data/spec/adhearsion/call_controller/dial_spec.rb +811 -79
  51. data/spec/adhearsion/call_controller/output/formatter_spec.rb +13 -1
  52. data/spec/adhearsion/call_controller/output_spec.rb +35 -1
  53. data/spec/adhearsion/call_controller_spec.rb +174 -18
  54. data/spec/adhearsion/call_spec.rb +423 -39
  55. data/spec/adhearsion/calls_spec.rb +19 -3
  56. data/spec/adhearsion/outbound_call_spec.rb +88 -45
  57. data/spec/adhearsion/punchblock_plugin/initializer_spec.rb +3 -3
  58. data/spec/adhearsion/router/route_spec.rb +2 -2
  59. data/spec/spec_helper.rb +2 -0
  60. metadata +92 -77
  61. data/features/app_generator.feature +0 -49
  62. data/lib/adhearsion/generators/app/templates/config/adhearsion.rb +0 -71
  63. data/lib/adhearsion/generators/plugin/templates/.gitignore +0 -9
@@ -12,12 +12,13 @@ module Adhearsion
12
12
  end
13
13
 
14
14
  def new_offer(call_id = nil, headers = {})
15
- Punchblock::Event::Offer.new :target_call_id => call_id || random_call_id, :headers => headers
15
+ Punchblock::Event::Offer.new domain: 'example.com', transport: 'xmpp', :target_call_id => call_id || random_call_id, :headers => headers
16
16
  end
17
17
 
18
- it 'can create a call and add it to the collection' do
18
+ it 'can add a call to the collection' do
19
19
  subject.any?.should be == false
20
- call = subject.from_offer new_offer
20
+ call = Call.new new_offer
21
+ subject << call
21
22
  call.should be_a Adhearsion::Call
22
23
  subject.size.should be == 1
23
24
  subject[call.id].should be call
@@ -40,12 +41,14 @@ module Adhearsion
40
41
  it "should remove the call from the collection" do
41
42
  subject.size.should be == number_of_calls - 1
42
43
  subject[deleted_call.id].should be_nil
44
+ subject.with_uri(deleted_call.uri).should be_nil
43
45
  end
44
46
  end
45
47
 
46
48
  context "by dead call object" do
47
49
  before do
48
50
  @call_id = deleted_call.id
51
+ @call_uri = deleted_call.uri
49
52
  Celluloid::Actor.kill deleted_call
50
53
  deleted_call.should_not be_alive
51
54
  subject.remove_inactive_call deleted_call
@@ -54,6 +57,7 @@ module Adhearsion
54
57
  it "should remove the call from the collection" do
55
58
  subject.size.should be == number_of_calls - 1
56
59
  subject[@call_id].should be_nil
60
+ subject.with_uri(@call_uri).should be_nil
57
61
  end
58
62
  end
59
63
 
@@ -63,6 +67,7 @@ module Adhearsion
63
67
  it "should remove the call from the collection" do
64
68
  subject.size.should be == number_of_calls - 1
65
69
  subject[deleted_call.id].should be_nil
70
+ subject.with_uri(deleted_call.uri).should be_nil
66
71
  end
67
72
  end
68
73
  end
@@ -76,6 +81,12 @@ module Adhearsion
76
81
  subject.with_tag(:moderator).should be == [tagged_call]
77
82
  end
78
83
 
84
+ it "finding calls by uri" do
85
+ calls.each { |call| subject << call }
86
+
87
+ subject.with_uri(calls.last.uri).should be == calls.last
88
+ end
89
+
79
90
  describe "#<<" do
80
91
  it "should allow chaining" do
81
92
  subject << Call.new(new_offer) << Call.new(new_offer)
@@ -86,6 +97,7 @@ module Adhearsion
86
97
  describe "when a call in the collection terminates cleanly" do
87
98
  it "is removed from the collection" do
88
99
  call_id = call.id
100
+ call_uri = call.uri
89
101
  size_before = subject.size
90
102
 
91
103
  subject << call
@@ -93,6 +105,7 @@ module Adhearsion
93
105
 
94
106
  subject.size.should be == size_before
95
107
  subject[call_id].should be_nil
108
+ subject.with_uri(call_uri).should be_nil
96
109
  end
97
110
  end
98
111
 
@@ -112,15 +125,18 @@ module Adhearsion
112
125
 
113
126
  it "is removed from the collection" do
114
127
  call_id = call.id
128
+ call_uri = call.uri
115
129
  size_before = subject.size
116
130
 
117
131
  subject << call
118
132
  subject.size.should be > size_before
119
133
  subject[call_id].should be call
134
+ subject.with_uri(call_uri).should be call
120
135
 
121
136
  crash
122
137
  subject.size.should be == size_before
123
138
  subject[call_id].should be_nil
139
+ subject.with_uri(call_uri).should be_nil
124
140
  end
125
141
 
126
142
  it "is sends a hangup command for the call" do
@@ -18,6 +18,13 @@ module Adhearsion
18
18
  its(:client) { should be mock_client }
19
19
  its(:start_time) { should be nil }
20
20
 
21
+ it "should allow timers to be registered from outside" do
22
+ foo = :bar
23
+ subject.after(1) { foo = :baz }
24
+ sleep 1.1
25
+ foo.should == :baz
26
+ end
27
+
21
28
  describe ".originate" do
22
29
  let(:to) { 'sip:foo@bar.com' }
23
30
 
@@ -84,6 +91,23 @@ module Adhearsion
84
91
  call << Punchblock::Event::Answered.new
85
92
  end
86
93
  end
94
+
95
+ context "when the dial fails" do
96
+ before do
97
+ subject.wrapped_object.should_receive(:write_command)
98
+ Punchblock::Command::Dial.any_instance.should_receive(:response).and_return StandardError.new("User not registered")
99
+ end
100
+
101
+ it "should raise the exception in the caller" do
102
+ expect { subject.dial to }.to raise_error("User not registered")
103
+ end
104
+
105
+ it "should kill the actor" do
106
+ expect { subject.dial to }.to raise_error("User not registered")
107
+ sleep 0.1
108
+ subject.should_not be_alive
109
+ end
110
+ end
87
111
  end
88
112
 
89
113
  describe "event handlers" do
@@ -121,7 +145,7 @@ module Adhearsion
121
145
 
122
146
  describe "#dial" do
123
147
  def expect_message_waiting_for_response(message)
124
- subject.wrapped_object.should_receive(:write_and_await_response).once.with(message, 60).and_return do
148
+ subject.wrapped_object.should_receive(:write_and_await_response).once.with(message, 60, true).and_return do
125
149
  message.transport = transport
126
150
  message.target_call_id = call_id
127
151
  message.domain = domain
@@ -137,61 +161,80 @@ module Adhearsion
137
161
 
138
162
  let(:expected_dial_command) { Punchblock::Command::Dial.new(:to => to, :from => from) }
139
163
 
140
- before do
141
- expect_message_waiting_for_response expected_dial_command
142
- end
164
+ context "with a successful response" do
165
+ before do
166
+ expect_message_waiting_for_response expected_dial_command
167
+ end
143
168
 
144
- it "should send a dial stanza, wait for the response" do
145
- subject.dial to, :from => from
146
- end
169
+ it "should send a dial stanza, wait for the response" do
170
+ subject.dial to, :from => from
171
+ end
147
172
 
148
- it "should set the dial command" do
149
- subject.dial to, :from => from
150
- subject.dial_command.should be == expected_dial_command
151
- end
173
+ it "should set the dial command" do
174
+ subject.dial to, :from => from
175
+ subject.dial_command.should be == expected_dial_command
176
+ end
152
177
 
153
- it "should set the URI from the reference" do
154
- subject.dial to, :from => from
155
- subject.uri.should be == "footransport:abc123@rayo.net"
156
- end
178
+ it "should set the URI from the reference" do
179
+ subject.dial to, :from => from
180
+ subject.uri.should be == "footransport:abc123@rayo.net"
181
+ end
157
182
 
158
- it "should set the call ID from the reference" do
159
- subject.dial to, :from => from
160
- subject.id.should be == call_id
161
- end
183
+ it "should set the call ID from the reference" do
184
+ subject.dial to, :from => from
185
+ subject.id.should be == call_id
186
+ end
162
187
 
163
- it "should set the call domain from the reference" do
164
- subject.dial to, :from => from
165
- subject.domain.should be == domain
166
- end
188
+ it "should set the call domain from the reference" do
189
+ subject.dial to, :from => from
190
+ subject.domain.should be == domain
191
+ end
167
192
 
168
- it "should set the to from the dial command" do
169
- subject.dial to, :from => from
170
- subject.to.should be == to
171
- end
193
+ it "should set the to from the dial command" do
194
+ subject.dial to, :from => from
195
+ subject.to.should be == to
196
+ end
172
197
 
173
- it "should set the 'from' from the dial command" do
174
- subject.dial to, :from => from
175
- subject.from.should be == from
176
- end
198
+ it "should set the 'from' from the dial command" do
199
+ subject.dial to, :from => from
200
+ subject.from.should be == from
201
+ end
177
202
 
178
- it "should add the call to the active calls registry" do
179
- Adhearsion.active_calls.clear
180
- subject.dial to, :from => from
181
- Adhearsion.active_calls[call_id].should be subject
182
- end
203
+ it "should add the call to the active calls registry" do
204
+ Adhearsion.active_calls.clear
205
+ subject.dial to, :from => from
206
+ Adhearsion.active_calls[call_id].should be subject
207
+ end
208
+
209
+ it "should immediately fire the :call_dialed event giving the call" do
210
+ Adhearsion::Events.should_receive(:trigger_immediately).once.with(:call_dialed, subject)
211
+ subject.dial to, :from => from
212
+ end
183
213
 
184
- it "should immediately fire the :call_dialed event giving the call" do
185
- Adhearsion::Events.should_receive(:trigger_immediately).once.with(:call_dialed, subject)
186
- subject.dial to, :from => from
214
+ it "should not modify the provided options" do
215
+ options = {:from => from}
216
+ original_options = Marshal.load(Marshal.dump(options))
217
+ options.should be == original_options
218
+ subject.dial to, options
219
+ options.should be == original_options
220
+ end
187
221
  end
188
222
 
189
- it "should not modify the provided options" do
190
- options = {:from => from}
191
- original_options = Marshal.load(Marshal.dump(options))
192
- options.should be == original_options
193
- subject.dial to, options
194
- options.should be == original_options
223
+ context "when the dial fails" do
224
+ before do
225
+ subject.wrapped_object.should_receive(:write_command)
226
+ Punchblock::Command::Dial.any_instance.should_receive(:response).and_return StandardError.new("User not registered")
227
+ end
228
+
229
+ it "should raise the exception in the caller" do
230
+ expect { subject.dial to }.to raise_error("User not registered")
231
+ end
232
+
233
+ it "should kill the actor" do
234
+ expect { subject.dial to }.to raise_error("User not registered")
235
+ sleep 0.1
236
+ subject.should_not be_alive
237
+ end
195
238
  end
196
239
  end
197
240
 
@@ -199,7 +199,7 @@ module Adhearsion
199
199
  before do
200
200
  initialize_punchblock
201
201
  Adhearsion::Process.should_receive(:state_name).once.and_return process_state
202
- Adhearsion.active_calls.should_receive(:from_offer).once.and_return mock_call
202
+ Adhearsion::Call.should_receive(:new).once.and_return mock_call
203
203
  end
204
204
 
205
205
  context "when the Adhearsion::Process is :booting" do
@@ -276,8 +276,8 @@ module Adhearsion
276
276
  end
277
277
 
278
278
  describe "with an inactive call" do
279
- it "should log an error" do
280
- Adhearsion::Logging.get_logger(Initializer).should_receive(:error).once.with("Event received for inactive call #{call_id}: #{mock_event.inspect}")
279
+ it "should log an warning" do
280
+ Adhearsion::Logging.get_logger(Initializer).should_receive(:warn).once.with("Event received for inactive call #{call_id}: #{mock_event.inspect}")
281
281
  Initializer.dispatch_call_event mock_event
282
282
  end
283
283
  end
@@ -159,8 +159,8 @@ module Adhearsion
159
159
  end
160
160
  end
161
161
 
162
- context 'with the :ahn_prevent_hangup call variable set' do
163
- before { call[:ahn_prevent_hangup] = true }
162
+ context 'with the Call#auto_hangup set to false' do
163
+ before { call.auto_hangup = false }
164
164
 
165
165
  it "should not hangup the call after controller execution" do
166
166
  call.should_receive(:hangup).never
@@ -33,6 +33,8 @@ RSpec.configure do |config|
33
33
 
34
34
  config.before :suite do
35
35
  Adhearsion::Logging.start Adhearsion::Logging.default_appenders, :trace, Adhearsion.config.platform.logging.formatter
36
+ Adhearsion.config.platform.after_hangup_lifetime = 10
37
+ Adhearsion::Initializer.new.initialize_exception_logger
36
38
  end
37
39
 
38
40
  config.before :each do
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.4.0
4
+ version: 2.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jay Phillips
@@ -11,376 +11,390 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2013-08-29 00:00:00.000000000 Z
14
+ date: 2014-02-03 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: activesupport
18
18
  requirement: !ruby/object:Gem::Requirement
19
19
  requirements:
20
- - - '>='
20
+ - - ">="
21
21
  - !ruby/object:Gem::Version
22
22
  version: 3.0.0
23
- - - <
23
+ - - "<"
24
24
  - !ruby/object:Gem::Version
25
25
  version: 5.0.0
26
26
  type: :runtime
27
27
  prerelease: false
28
28
  version_requirements: !ruby/object:Gem::Requirement
29
29
  requirements:
30
- - - '>='
30
+ - - ">="
31
31
  - !ruby/object:Gem::Version
32
32
  version: 3.0.0
33
- - - <
33
+ - - "<"
34
34
  - !ruby/object:Gem::Version
35
35
  version: 5.0.0
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: adhearsion-loquacious
38
38
  requirement: !ruby/object:Gem::Requirement
39
39
  requirements:
40
- - - ~>
40
+ - - "~>"
41
41
  - !ruby/object:Gem::Version
42
42
  version: '1.9'
43
43
  type: :runtime
44
44
  prerelease: false
45
45
  version_requirements: !ruby/object:Gem::Requirement
46
46
  requirements:
47
- - - ~>
47
+ - - "~>"
48
48
  - !ruby/object:Gem::Version
49
49
  version: '1.9'
50
50
  - !ruby/object:Gem::Dependency
51
51
  name: bundler
52
52
  requirement: !ruby/object:Gem::Requirement
53
53
  requirements:
54
- - - ~>
54
+ - - "~>"
55
55
  - !ruby/object:Gem::Version
56
56
  version: '1.0'
57
57
  type: :runtime
58
58
  prerelease: false
59
59
  version_requirements: !ruby/object:Gem::Requirement
60
60
  requirements:
61
- - - ~>
61
+ - - "~>"
62
62
  - !ruby/object:Gem::Version
63
63
  version: '1.0'
64
64
  - !ruby/object:Gem::Dependency
65
65
  name: celluloid
66
66
  requirement: !ruby/object:Gem::Requirement
67
67
  requirements:
68
- - - ~>
68
+ - - "~>"
69
69
  - !ruby/object:Gem::Version
70
70
  version: '0.14'
71
71
  type: :runtime
72
72
  prerelease: false
73
73
  version_requirements: !ruby/object:Gem::Requirement
74
74
  requirements:
75
- - - ~>
75
+ - - "~>"
76
76
  - !ruby/object:Gem::Version
77
77
  version: '0.14'
78
78
  - !ruby/object:Gem::Dependency
79
79
  name: countdownlatch
80
80
  requirement: !ruby/object:Gem::Requirement
81
81
  requirements:
82
- - - '>='
82
+ - - ">="
83
83
  - !ruby/object:Gem::Version
84
84
  version: '0'
85
85
  type: :runtime
86
86
  prerelease: false
87
87
  version_requirements: !ruby/object:Gem::Requirement
88
88
  requirements:
89
- - - '>='
89
+ - - ">="
90
90
  - !ruby/object:Gem::Version
91
91
  version: '0'
92
92
  - !ruby/object:Gem::Dependency
93
93
  name: deep_merge
94
94
  requirement: !ruby/object:Gem::Requirement
95
95
  requirements:
96
- - - '>='
96
+ - - ">="
97
97
  - !ruby/object:Gem::Version
98
98
  version: '0'
99
99
  type: :runtime
100
100
  prerelease: false
101
101
  version_requirements: !ruby/object:Gem::Requirement
102
102
  requirements:
103
- - - '>='
103
+ - - ">="
104
104
  - !ruby/object:Gem::Version
105
105
  version: '0'
106
106
  - !ruby/object:Gem::Dependency
107
107
  name: ffi
108
108
  requirement: !ruby/object:Gem::Requirement
109
109
  requirements:
110
- - - ~>
110
+ - - "~>"
111
111
  - !ruby/object:Gem::Version
112
112
  version: '1.0'
113
113
  type: :runtime
114
114
  prerelease: false
115
115
  version_requirements: !ruby/object:Gem::Requirement
116
116
  requirements:
117
- - - ~>
117
+ - - "~>"
118
118
  - !ruby/object:Gem::Version
119
119
  version: '1.0'
120
120
  - !ruby/object:Gem::Dependency
121
121
  name: girl_friday
122
122
  requirement: !ruby/object:Gem::Requirement
123
123
  requirements:
124
- - - '>='
124
+ - - ">="
125
125
  - !ruby/object:Gem::Version
126
126
  version: '0'
127
127
  type: :runtime
128
128
  prerelease: false
129
129
  version_requirements: !ruby/object:Gem::Requirement
130
130
  requirements:
131
- - - '>='
131
+ - - ">="
132
132
  - !ruby/object:Gem::Version
133
133
  version: '0'
134
134
  - !ruby/object:Gem::Dependency
135
135
  name: has-guarded-handlers
136
136
  requirement: !ruby/object:Gem::Requirement
137
137
  requirements:
138
- - - ~>
138
+ - - "~>"
139
139
  - !ruby/object:Gem::Version
140
- version: '1.5'
140
+ version: '1.6'
141
141
  type: :runtime
142
142
  prerelease: false
143
143
  version_requirements: !ruby/object:Gem::Requirement
144
144
  requirements:
145
- - - ~>
145
+ - - "~>"
146
146
  - !ruby/object:Gem::Version
147
- version: '1.5'
147
+ version: '1.6'
148
148
  - !ruby/object:Gem::Dependency
149
149
  name: logging
150
150
  requirement: !ruby/object:Gem::Requirement
151
151
  requirements:
152
- - - ~>
152
+ - - "~>"
153
153
  - !ruby/object:Gem::Version
154
154
  version: '1.8'
155
155
  type: :runtime
156
156
  prerelease: false
157
157
  version_requirements: !ruby/object:Gem::Requirement
158
158
  requirements:
159
- - - ~>
159
+ - - "~>"
160
160
  - !ruby/object:Gem::Version
161
161
  version: '1.8'
162
162
  - !ruby/object:Gem::Dependency
163
163
  name: pry
164
164
  requirement: !ruby/object:Gem::Requirement
165
165
  requirements:
166
- - - '>='
166
+ - - ">="
167
167
  - !ruby/object:Gem::Version
168
168
  version: '0'
169
169
  type: :runtime
170
170
  prerelease: false
171
171
  version_requirements: !ruby/object:Gem::Requirement
172
172
  requirements:
173
- - - '>='
173
+ - - ">="
174
174
  - !ruby/object:Gem::Version
175
175
  version: '0'
176
176
  - !ruby/object:Gem::Dependency
177
177
  name: punchblock
178
178
  requirement: !ruby/object:Gem::Requirement
179
179
  requirements:
180
- - - ~>
180
+ - - "~>"
181
181
  - !ruby/object:Gem::Version
182
- version: '2.0'
182
+ version: '2.3'
183
183
  type: :runtime
184
184
  prerelease: false
185
185
  version_requirements: !ruby/object:Gem::Requirement
186
186
  requirements:
187
- - - ~>
187
+ - - "~>"
188
188
  - !ruby/object:Gem::Version
189
- version: '2.0'
189
+ version: '2.3'
190
190
  - !ruby/object:Gem::Dependency
191
191
  name: rake
192
192
  requirement: !ruby/object:Gem::Requirement
193
193
  requirements:
194
- - - '>='
194
+ - - ">="
195
195
  - !ruby/object:Gem::Version
196
196
  version: '0'
197
197
  type: :runtime
198
198
  prerelease: false
199
199
  version_requirements: !ruby/object:Gem::Requirement
200
200
  requirements:
201
- - - '>='
201
+ - - ">="
202
202
  - !ruby/object:Gem::Version
203
203
  version: '0'
204
204
  - !ruby/object:Gem::Dependency
205
205
  name: ruby_speech
206
206
  requirement: !ruby/object:Gem::Requirement
207
207
  requirements:
208
- - - ~>
208
+ - - "~>"
209
209
  - !ruby/object:Gem::Version
210
210
  version: '2.0'
211
211
  type: :runtime
212
212
  prerelease: false
213
213
  version_requirements: !ruby/object:Gem::Requirement
214
214
  requirements:
215
- - - ~>
215
+ - - "~>"
216
216
  - !ruby/object:Gem::Version
217
217
  version: '2.0'
218
218
  - !ruby/object:Gem::Dependency
219
219
  name: thor
220
220
  requirement: !ruby/object:Gem::Requirement
221
221
  requirements:
222
- - - ~>
222
+ - - "~>"
223
223
  - !ruby/object:Gem::Version
224
224
  version: 0.18.0
225
225
  type: :runtime
226
226
  prerelease: false
227
227
  version_requirements: !ruby/object:Gem::Requirement
228
228
  requirements:
229
- - - ~>
229
+ - - "~>"
230
230
  - !ruby/object:Gem::Version
231
231
  version: 0.18.0
232
232
  - !ruby/object:Gem::Dependency
233
233
  name: aruba
234
234
  requirement: !ruby/object:Gem::Requirement
235
235
  requirements:
236
- - - ~>
236
+ - - "~>"
237
237
  - !ruby/object:Gem::Version
238
238
  version: '0.5'
239
239
  type: :development
240
240
  prerelease: false
241
241
  version_requirements: !ruby/object:Gem::Requirement
242
242
  requirements:
243
- - - ~>
243
+ - - "~>"
244
244
  - !ruby/object:Gem::Version
245
245
  version: '0.5'
246
246
  - !ruby/object:Gem::Dependency
247
247
  name: ci_reporter
248
248
  requirement: !ruby/object:Gem::Requirement
249
249
  requirements:
250
- - - '>='
250
+ - - ">="
251
251
  - !ruby/object:Gem::Version
252
252
  version: '0'
253
253
  type: :development
254
254
  prerelease: false
255
255
  version_requirements: !ruby/object:Gem::Requirement
256
256
  requirements:
257
- - - '>='
257
+ - - ">="
258
258
  - !ruby/object:Gem::Version
259
259
  version: '0'
260
260
  - !ruby/object:Gem::Dependency
261
261
  name: cucumber
262
262
  requirement: !ruby/object:Gem::Requirement
263
263
  requirements:
264
- - - '>='
264
+ - - ">="
265
265
  - !ruby/object:Gem::Version
266
266
  version: '0'
267
267
  type: :development
268
268
  prerelease: false
269
269
  version_requirements: !ruby/object:Gem::Requirement
270
270
  requirements:
271
- - - '>='
271
+ - - ">="
272
272
  - !ruby/object:Gem::Version
273
273
  version: '0'
274
274
  - !ruby/object:Gem::Dependency
275
275
  name: guard-cucumber
276
276
  requirement: !ruby/object:Gem::Requirement
277
277
  requirements:
278
- - - '>='
278
+ - - ">="
279
279
  - !ruby/object:Gem::Version
280
280
  version: '0'
281
281
  type: :development
282
282
  prerelease: false
283
283
  version_requirements: !ruby/object:Gem::Requirement
284
284
  requirements:
285
- - - '>='
285
+ - - ">="
286
286
  - !ruby/object:Gem::Version
287
287
  version: '0'
288
288
  - !ruby/object:Gem::Dependency
289
289
  name: guard-rspec
290
290
  requirement: !ruby/object:Gem::Requirement
291
291
  requirements:
292
- - - '>='
292
+ - - ">="
293
293
  - !ruby/object:Gem::Version
294
294
  version: '0'
295
295
  type: :development
296
296
  prerelease: false
297
297
  version_requirements: !ruby/object:Gem::Requirement
298
298
  requirements:
299
- - - '>='
299
+ - - ">="
300
300
  - !ruby/object:Gem::Version
301
301
  version: '0'
302
302
  - !ruby/object:Gem::Dependency
303
303
  name: rspec
304
304
  requirement: !ruby/object:Gem::Requirement
305
305
  requirements:
306
- - - ~>
306
+ - - "~>"
307
307
  - !ruby/object:Gem::Version
308
308
  version: '2.11'
309
309
  type: :development
310
310
  prerelease: false
311
311
  version_requirements: !ruby/object:Gem::Requirement
312
312
  requirements:
313
- - - ~>
313
+ - - "~>"
314
314
  - !ruby/object:Gem::Version
315
315
  version: '2.11'
316
316
  - !ruby/object:Gem::Dependency
317
317
  name: simplecov
318
318
  requirement: !ruby/object:Gem::Requirement
319
319
  requirements:
320
- - - '>='
320
+ - - ">="
321
321
  - !ruby/object:Gem::Version
322
322
  version: '0'
323
323
  type: :development
324
324
  prerelease: false
325
325
  version_requirements: !ruby/object:Gem::Requirement
326
326
  requirements:
327
- - - '>='
327
+ - - ">="
328
328
  - !ruby/object:Gem::Version
329
329
  version: '0'
330
330
  - !ruby/object:Gem::Dependency
331
331
  name: simplecov-rcov
332
332
  requirement: !ruby/object:Gem::Requirement
333
333
  requirements:
334
- - - '>='
334
+ - - ">="
335
335
  - !ruby/object:Gem::Version
336
336
  version: '0'
337
337
  type: :development
338
338
  prerelease: false
339
339
  version_requirements: !ruby/object:Gem::Requirement
340
340
  requirements:
341
- - - '>='
341
+ - - ">="
342
342
  - !ruby/object:Gem::Version
343
343
  version: '0'
344
344
  - !ruby/object:Gem::Dependency
345
345
  name: yard
346
346
  requirement: !ruby/object:Gem::Requirement
347
347
  requirements:
348
- - - '>='
348
+ - - ">="
349
+ - !ruby/object:Gem::Version
350
+ version: '0'
351
+ type: :development
352
+ prerelease: false
353
+ version_requirements: !ruby/object:Gem::Requirement
354
+ requirements:
355
+ - - ">="
356
+ - !ruby/object:Gem::Version
357
+ version: '0'
358
+ - !ruby/object:Gem::Dependency
359
+ name: guard-yard
360
+ requirement: !ruby/object:Gem::Requirement
361
+ requirements:
362
+ - - ">="
349
363
  - !ruby/object:Gem::Version
350
364
  version: '0'
351
365
  type: :development
352
366
  prerelease: false
353
367
  version_requirements: !ruby/object:Gem::Requirement
354
368
  requirements:
355
- - - '>='
369
+ - - ">="
356
370
  - !ruby/object:Gem::Version
357
371
  version: '0'
358
372
  - !ruby/object:Gem::Dependency
359
373
  name: coveralls
360
374
  requirement: !ruby/object:Gem::Requirement
361
375
  requirements:
362
- - - '>='
376
+ - - ">="
363
377
  - !ruby/object:Gem::Version
364
378
  version: '0'
365
379
  type: :development
366
380
  prerelease: false
367
381
  version_requirements: !ruby/object:Gem::Requirement
368
382
  requirements:
369
- - - '>='
383
+ - - ">="
370
384
  - !ruby/object:Gem::Version
371
385
  version: '0'
372
386
  - !ruby/object:Gem::Dependency
373
387
  name: timecop
374
388
  requirement: !ruby/object:Gem::Requirement
375
389
  requirements:
376
- - - '>='
390
+ - - ">="
377
391
  - !ruby/object:Gem::Version
378
392
  version: '0'
379
393
  type: :development
380
394
  prerelease: false
381
395
  version_requirements: !ruby/object:Gem::Requirement
382
396
  requirements:
383
- - - '>='
397
+ - - ">="
384
398
  - !ruby/object:Gem::Version
385
399
  version: '0'
386
400
  description: Adhearsion is an open-source telephony development framework
@@ -390,10 +404,10 @@ executables:
390
404
  extensions: []
391
405
  extra_rdoc_files: []
392
406
  files:
393
- - .gitignore
394
- - .rspec
395
- - .travis.yml
396
- - .yardopts
407
+ - ".gitignore"
408
+ - ".rspec"
409
+ - ".travis.yml"
410
+ - ".yardopts"
397
411
  - CHANGELOG.md
398
412
  - CONTRIBUTING.md
399
413
  - Gemfile
@@ -404,7 +418,6 @@ files:
404
418
  - adhearsion.gemspec
405
419
  - bin/ahn
406
420
  - cucumber.yml
407
- - features/app_generator.feature
408
421
  - features/cli_basic.feature
409
422
  - features/cli_create.feature
410
423
  - features/cli_daemon.feature
@@ -463,23 +476,25 @@ files:
463
476
  - lib/adhearsion/generators/app/templates/Procfile
464
477
  - lib/adhearsion/generators/app/templates/README.md
465
478
  - lib/adhearsion/generators/app/templates/Rakefile
466
- - lib/adhearsion/generators/app/templates/config/adhearsion.rb
479
+ - lib/adhearsion/generators/app/templates/adhearsion.erb
467
480
  - lib/adhearsion/generators/app/templates/config/environment.rb
481
+ - lib/adhearsion/generators/app/templates/events.erb
468
482
  - lib/adhearsion/generators/app/templates/gitignore
469
- - lib/adhearsion/generators/app/templates/lib/simon_game.rb
483
+ - lib/adhearsion/generators/app/templates/routes.erb
470
484
  - lib/adhearsion/generators/app/templates/rspec
471
485
  - lib/adhearsion/generators/app/templates/script/ahn
472
- - lib/adhearsion/generators/app/templates/spec/call_controllers/simon_game_spec.rb
486
+ - lib/adhearsion/generators/app/templates/simon_game.rb
487
+ - lib/adhearsion/generators/app/templates/simon_game_spec.rb
473
488
  - lib/adhearsion/generators/app/templates/spec/spec_helper.rb
474
489
  - lib/adhearsion/generators/controller/controller_generator.rb
475
- - lib/adhearsion/generators/controller/templates/lib/controller.rb
476
- - lib/adhearsion/generators/controller/templates/spec/controller_spec.rb
490
+ - lib/adhearsion/generators/controller/templates/lib/controller.rb.erb
491
+ - lib/adhearsion/generators/controller/templates/spec/controller_spec.rb.erb
477
492
  - lib/adhearsion/generators/generator.rb
478
493
  - lib/adhearsion/generators/plugin/plugin_generator.rb
479
- - lib/adhearsion/generators/plugin/templates/.gitignore
480
494
  - lib/adhearsion/generators/plugin/templates/Gemfile.tt
481
495
  - lib/adhearsion/generators/plugin/templates/README.md.tt
482
496
  - lib/adhearsion/generators/plugin/templates/Rakefile.tt
497
+ - lib/adhearsion/generators/plugin/templates/gitignore
483
498
  - lib/adhearsion/generators/plugin/templates/lib/plugin-template.rb.tt
484
499
  - lib/adhearsion/generators/plugin/templates/lib/plugin-template/controller_methods.rb.tt
485
500
  - lib/adhearsion/generators/plugin/templates/lib/plugin-template/plugin.rb.tt
@@ -558,7 +573,8 @@ files:
558
573
  - spec/support/logging_helpers.rb
559
574
  - spec/support/punchblock_mocks.rb
560
575
  homepage: http://adhearsion.com
561
- licenses: []
576
+ licenses:
577
+ - MIT
562
578
  metadata: {}
563
579
  post_install_message:
564
580
  rdoc_options: []
@@ -566,22 +582,21 @@ require_paths:
566
582
  - lib
567
583
  required_ruby_version: !ruby/object:Gem::Requirement
568
584
  requirements:
569
- - - '>='
585
+ - - ">="
570
586
  - !ruby/object:Gem::Version
571
- version: '0'
587
+ version: 1.9.3
572
588
  required_rubygems_version: !ruby/object:Gem::Requirement
573
589
  requirements:
574
- - - '>='
590
+ - - ">="
575
591
  - !ruby/object:Gem::Version
576
592
  version: '0'
577
593
  requirements: []
578
594
  rubyforge_project:
579
- rubygems_version: 2.0.3
595
+ rubygems_version: 2.2.0
580
596
  signing_key:
581
597
  specification_version: 4
582
598
  summary: Adhearsion, open-source telephony development framework
583
599
  test_files:
584
- - features/app_generator.feature
585
600
  - features/cli_basic.feature
586
601
  - features/cli_create.feature
587
602
  - features/cli_daemon.feature