adhearsion 2.4.0 → 2.5.0

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