adhearsion 2.3.3 → 2.3.4

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,5 +1,9 @@
1
1
  # [develop](https://github.com/adhearsion/adhearsion)
2
2
 
3
+ # [2.3.4](https://github.com/adhearsion/adhearsion/compare/v2.3.3...v2.3.4) - [2013-05-14](https://rubygems.org/gems/adhearsion/versions/2.3.4)
4
+ * Bugfix: Process signals safely in the main thread - fixes shutdown on Ruby 2.0
5
+ * Bugfix: Expose the cert store directory in Punchblock config
6
+
3
7
  # [2.3.3](https://github.com/adhearsion/adhearsion/compare/v2.3.2...v2.3.3) - [2013-05-08](https://rubygems.org/gems/adhearsion/versions/2.3.3)
4
8
  * Bugfix: Support Celluloid 0.14's new block semantics
5
9
 
@@ -24,7 +24,6 @@ Gem::Specification.new do |s|
24
24
  s.add_runtime_dependency 'countdownlatch'
25
25
  s.add_runtime_dependency 'deep_merge'
26
26
  s.add_runtime_dependency 'ffi', ["~> 1.0"]
27
- s.add_runtime_dependency 'future-resource', ["~> 1.0"]
28
27
  s.add_runtime_dependency 'girl_friday'
29
28
  s.add_runtime_dependency 'has-guarded-handlers', ["~> 1.5"]
30
29
  s.add_runtime_dependency 'jruby-openssl' if RUBY_PLATFORM == 'java'
@@ -34,7 +34,7 @@ module Adhearsion
34
34
  # i.e. timeout after :for if no one answers the call
35
35
  #
36
36
  # @option options [CallController] :confirm the controller to execute on answered outbound calls to give an opportunity to screen the call. The calls will be joined if the outbound call is still active after this controller completes.
37
- # @option options [Hash] :confirm_metadata Metadata to set on the confirmation controller before executing it.
37
+ # @option options [Hash] :confirm_metadata Metadata to set on the confirmation controller before executing it. This is shared between all calls if dialing multiple endpoints; if you care about it being mutated, you should provide an immutable value (using eg https://github.com/harukizaemon/hamster).
38
38
  #
39
39
  # @example Make a call to the PSTN using my SIP provider for VoIP termination
40
40
  # dial "SIP/19095551001@my.sip.voip.terminator.us"
@@ -15,8 +15,8 @@ module Adhearsion
15
15
  instance.send method_name, *args, &block
16
16
  end
17
17
 
18
- def respond_to?(method_name)
19
- instance.respond_to?(method_name) || super
18
+ def respond_to_missing?(method_name, include_private = false)
19
+ instance.respond_to? method_name, include_private
20
20
  end
21
21
 
22
22
  def instance
@@ -73,9 +73,8 @@ module Adhearsion
73
73
  register_handler method_name, *args, &block
74
74
  end
75
75
 
76
- def respond_to?(method_name)
77
- return true if instance_variable_defined?(:@handlers) && @handlers.has_key?(method_name)
78
- super
76
+ def respond_to_missing?(method_name, include_private = false)
77
+ instance_variable_defined?(:@handlers) && @handlers.has_key?(method_name)
79
78
  end
80
79
 
81
80
  alias :register_callback :register_handler
@@ -38,33 +38,35 @@ module Adhearsion
38
38
  end
39
39
 
40
40
  def start
41
- resolve_pid_file_path
42
- load_lib_folder
43
- load_config_file
44
- initialize_log_paths
45
-
46
- if should_daemonize?
47
- daemonize!
48
- else
49
- create_pid_file
50
- end
41
+ catch :boot_aborted do
42
+ resolve_pid_file_path
43
+ load_lib_folder
44
+ load_config_file
45
+ initialize_log_paths
46
+
47
+ if should_daemonize?
48
+ daemonize!
49
+ else
50
+ create_pid_file
51
+ end
51
52
 
52
- Adhearsion.statistics
53
- start_logging
54
- debugging_log
55
- launch_console if need_console?
56
- catch_termination_signal
57
- set_ahn_proc_name
58
- initialize_exception_logger
59
- update_rails_env_var
60
- init_plugins
53
+ Adhearsion.statistics
54
+ start_logging
55
+ debugging_log
56
+ launch_console if need_console?
57
+ catch_termination_signal
58
+ set_ahn_proc_name
59
+ initialize_exception_logger
60
+ update_rails_env_var
61
+ init_plugins
61
62
 
62
- run_plugins
63
- trigger_after_initialized_hooks
63
+ run_plugins
64
+ trigger_after_initialized_hooks
64
65
 
65
- Adhearsion::Process.booted if Adhearsion.status == :booting
66
+ Adhearsion::Process.booted if Adhearsion.status == :booting
66
67
 
67
- logger.info "Adhearsion v#{Adhearsion::VERSION} initialized in \"#{Adhearsion.config.platform.environment}\"!" if Adhearsion.status == :running
68
+ logger.info "Adhearsion v#{Adhearsion::VERSION} initialized in \"#{Adhearsion.config.platform.environment}\"!" if Adhearsion.status == :running
69
+ end
68
70
 
69
71
  # This method will block until all important threads have finished.
70
72
  # When it does, the process will exit.
@@ -130,24 +132,40 @@ module Adhearsion
130
132
  end
131
133
 
132
134
  def catch_termination_signal
133
- %w'INT TERM'.each do |process_signal|
134
- trap process_signal do
135
- logger.info "Received SIG#{process_signal}. Shutting down."
136
- Adhearsion::Process.shutdown
135
+ self_read, self_write = IO.pipe
136
+
137
+ %w(INT TERM HUP ALRM ABRT).each do |sig|
138
+ trap sig do
139
+ self_write.puts sig
137
140
  end
138
141
  end
139
142
 
140
- trap 'HUP' do
141
- logger.debug "Received SIGHUP. Reopening logfiles."
142
- Adhearsion::Logging.reopen_logs
143
+ Thread.new do
144
+ begin
145
+ while readable_io = IO.select([self_read])
146
+ signal = readable_io.first[0].gets.strip
147
+ handle_signal signal
148
+ end
149
+ rescue => e
150
+ logger.error "Crashed reading signals"
151
+ logger.error e
152
+ exit 1
153
+ end
143
154
  end
155
+ end
144
156
 
145
- trap 'ALRM' do
157
+ def handle_signal(signal)
158
+ case signal
159
+ when 'INT', 'TERM'
160
+ logger.info "Received SIG#{signal}. Shutting down."
161
+ Adhearsion::Process.shutdown
162
+ when 'HUP'
163
+ logger.debug "Received SIGHUP. Reopening logfiles."
164
+ Adhearsion::Logging.reopen_logs
165
+ when 'ALRM'
146
166
  logger.debug "Received SIGALRM. Toggling trace logging."
147
167
  Adhearsion::Logging.toggle_trace!
148
- end
149
-
150
- trap 'ABRT' do
168
+ when 'ABRT'
151
169
  logger.info "Received ABRT signal. Forcing stop."
152
170
  Adhearsion::Process.force_stop
153
171
  end
@@ -18,6 +18,7 @@ module Adhearsion
18
18
  password "1" , :desc => "Authentication credentials"
19
19
  host nil , :desc => "Host punchblock needs to connect (where rayo/asterisk/freeswitch is located)"
20
20
  port Proc.new { PunchblockPlugin.default_port_for_platform platform }, :transform => Proc.new { |v| PunchblockPlugin.validate_number v }, :desc => "Port punchblock needs to connect"
21
+ certs_directory nil , :desc => "Directory containing certificates for securing the connection."
21
22
  root_domain nil , :desc => "The root domain at which to address the server"
22
23
  calls_domain nil , :desc => "The domain at which to address calls"
23
24
  mixers_domain nil , :desc => "The domain at which to address mixers"
@@ -32,6 +32,7 @@ module Adhearsion
32
32
  :connection_timeout => self.config.connection_timeout,
33
33
  :host => self.config.host,
34
34
  :port => self.config.port,
35
+ :certs => self.config.certs_directory,
35
36
  :root_domain => self.config.root_domain,
36
37
  :calls_domain => self.config.calls_domain,
37
38
  :mixers_domain => self.config.mixers_domain,
@@ -106,6 +107,8 @@ module Adhearsion
106
107
 
107
108
  # Wait for the connection to establish
108
109
  m.synchronize { blocker.wait m }
110
+
111
+ throw :boot_aborted if self.attempts >= self.config.reconnect_attempts
109
112
  end
110
113
 
111
114
  def connect_to_server
@@ -1,5 +1,5 @@
1
1
  # encoding: utf-8
2
2
 
3
3
  module Adhearsion
4
- VERSION = '2.3.3'
4
+ VERSION = '2.3.4'
5
5
  end
@@ -93,6 +93,14 @@ module Adhearsion
93
93
  Events.clear_handlers :event, EventClass
94
94
  end
95
95
 
96
+ it "should respond_to? any methods corresponding to classes for which handlers are defined" do
97
+ Events.register_handler :event_type_1 do |event|
98
+ end
99
+
100
+ Events.should respond_to(:event_type_1)
101
+ Events.should_not respond_to(:event_type_2)
102
+ end
103
+
96
104
  describe '#draw' do
97
105
  it "should allow registering handlers by type" do
98
106
  result = nil
@@ -13,6 +13,7 @@ module Adhearsion
13
13
  config.password = "1"
14
14
  config.host = nil
15
15
  config.port = nil
16
+ config.certs_directory = nil
16
17
  config.root_domain = nil
17
18
  config.calls_domain = nil
18
19
  config.mixers_domain = nil
@@ -33,6 +34,7 @@ module Adhearsion
33
34
  config.password = options[:password] if options.has_key?(:password)
34
35
  config.host = options[:host] if options.has_key?(:host)
35
36
  config.port = options[:port] if options.has_key?(:port)
37
+ config.certs_directory = options[:certs_directory] if options.has_key?(:certs_directory)
36
38
  config.root_domain = options[:root_domain] if options.has_key?(:root_domain)
37
39
  config.calls_domain = options[:calls_domain] if options.has_key?(:calls_domain)
38
40
  config.mixers_domain = options[:mixers_domain] if options.has_key?(:mixers_domain)
@@ -80,6 +82,10 @@ module Adhearsion
80
82
  subject.port.should be_nil
81
83
  end
82
84
 
85
+ it "should set properly the certs_directory value" do
86
+ subject.certs_directory.should be_nil
87
+ end
88
+
83
89
  it "should set properly the root_domain value" do
84
90
  subject.root_domain.should be_nil
85
91
  end
@@ -117,10 +123,8 @@ module Adhearsion
117
123
  end
118
124
 
119
125
  it "starts the client with any overridden settings" do
120
- overrides = {:username => 'userb@127.0.0.1/foo', :password => '123', :host => 'foo.bar.com', :port => 200, :connection_timeout => 20, :root_domain => 'foo.com', :calls_domain => 'call.foo.com', :mixers_domain => 'mixer.foo.com', :media_engine => :swift, :default_voice => :hal}
121
-
122
- Punchblock::Connection::XMPP.should_receive(:new).once.with(overrides).and_return mock_client
123
- initialize_punchblock overrides
126
+ Punchblock::Connection::XMPP.should_receive(:new).once.with(username: 'userb@127.0.0.1/foo', password: '123', host: 'foo.bar.com', port: 200, certs: '/foo/bar', connection_timeout: 20, root_domain: 'foo.com', calls_domain: 'call.foo.com', mixers_domain: 'mixer.foo.com', media_engine: :swift, default_voice: :hal).and_return mock_client
127
+ initialize_punchblock username: 'userb@127.0.0.1/foo', password: '123', host: 'foo.bar.com', port: 200, certs_directory: '/foo/bar', connection_timeout: 20, root_domain: 'foo.com', calls_domain: 'call.foo.com', mixers_domain: 'mixer.foo.com', media_engine: :swift, default_voice: :hal
124
128
  end
125
129
 
126
130
  describe "#connect" do
@@ -180,7 +184,7 @@ module Adhearsion
180
184
  end
181
185
 
182
186
  describe 'using Asterisk' do
183
- let(:overrides) { {:username => 'test', :password => '123', :host => 'foo.bar.com', :port => 200, :connection_timeout => 20, :root_domain => 'foo.com', :calls_domain => 'call.foo.com', :mixers_domain => 'mixer.foo.com', :media_engine => :swift, :default_voice => :hal} }
187
+ let(:overrides) { {:username => 'test', :password => '123', :host => 'foo.bar.com', :port => 200, :certs => nil, :connection_timeout => 20, :root_domain => 'foo.com', :calls_domain => 'call.foo.com', :mixers_domain => 'mixer.foo.com', :media_engine => :swift, :default_voice => :hal} }
184
188
 
185
189
  it 'should start an Asterisk PB connection' do
186
190
  Punchblock::Connection::Asterisk.should_receive(:new).once.with(overrides).and_return mock_client
@@ -189,7 +193,7 @@ module Adhearsion
189
193
  end
190
194
 
191
195
  describe 'using FreeSWITCH' do
192
- let(:overrides) { {:username => 'test', :password => '123', :host => 'foo.bar.com', :port => 200, :connection_timeout => 20, :root_domain => 'foo.com', :calls_domain => 'call.foo.com', :mixers_domain => 'mixer.foo.com', :media_engine => :swift, :default_voice => :hal} }
196
+ let(:overrides) { {:username => 'test', :password => '123', :host => 'foo.bar.com', :port => 200, :certs => nil, :connection_timeout => 20, :root_domain => 'foo.com', :calls_domain => 'call.foo.com', :mixers_domain => 'mixer.foo.com', :media_engine => :swift, :default_voice => :hal} }
193
197
 
194
198
  it 'should start a FreeSWITCH PB connection' do
195
199
  Punchblock::Connection::Freeswitch.should_receive(:new).once.with(overrides).and_return mock_client
metadata CHANGED
@@ -1,7 +1,8 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: adhearsion
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.3.3
4
+ version: 2.3.4
5
+ prerelease:
5
6
  platform: ruby
6
7
  authors:
7
8
  - Jay Phillips
@@ -11,11 +12,12 @@ authors:
11
12
  autorequire:
12
13
  bindir: bin
13
14
  cert_chain: []
14
- date: 2013-05-08 00:00:00.000000000 Z
15
+ date: 2013-05-15 00:00:00.000000000 Z
15
16
  dependencies:
16
17
  - !ruby/object:Gem::Dependency
17
18
  name: activesupport
18
19
  requirement: !ruby/object:Gem::Requirement
20
+ none: false
19
21
  requirements:
20
22
  - - ~>
21
23
  - !ruby/object:Gem::Version
@@ -23,6 +25,7 @@ dependencies:
23
25
  type: :runtime
24
26
  prerelease: false
25
27
  version_requirements: !ruby/object:Gem::Requirement
28
+ none: false
26
29
  requirements:
27
30
  - - ~>
28
31
  - !ruby/object:Gem::Version
@@ -30,6 +33,7 @@ dependencies:
30
33
  - !ruby/object:Gem::Dependency
31
34
  name: adhearsion-loquacious
32
35
  requirement: !ruby/object:Gem::Requirement
36
+ none: false
33
37
  requirements:
34
38
  - - ~>
35
39
  - !ruby/object:Gem::Version
@@ -37,6 +41,7 @@ dependencies:
37
41
  type: :runtime
38
42
  prerelease: false
39
43
  version_requirements: !ruby/object:Gem::Requirement
44
+ none: false
40
45
  requirements:
41
46
  - - ~>
42
47
  - !ruby/object:Gem::Version
@@ -44,6 +49,7 @@ dependencies:
44
49
  - !ruby/object:Gem::Dependency
45
50
  name: bundler
46
51
  requirement: !ruby/object:Gem::Requirement
52
+ none: false
47
53
  requirements:
48
54
  - - ~>
49
55
  - !ruby/object:Gem::Version
@@ -51,6 +57,7 @@ dependencies:
51
57
  type: :runtime
52
58
  prerelease: false
53
59
  version_requirements: !ruby/object:Gem::Requirement
60
+ none: false
54
61
  requirements:
55
62
  - - ~>
56
63
  - !ruby/object:Gem::Version
@@ -58,6 +65,7 @@ dependencies:
58
65
  - !ruby/object:Gem::Dependency
59
66
  name: celluloid
60
67
  requirement: !ruby/object:Gem::Requirement
68
+ none: false
61
69
  requirements:
62
70
  - - ~>
63
71
  - !ruby/object:Gem::Version
@@ -65,6 +73,7 @@ dependencies:
65
73
  type: :runtime
66
74
  prerelease: false
67
75
  version_requirements: !ruby/object:Gem::Requirement
76
+ none: false
68
77
  requirements:
69
78
  - - ~>
70
79
  - !ruby/object:Gem::Version
@@ -72,34 +81,39 @@ dependencies:
72
81
  - !ruby/object:Gem::Dependency
73
82
  name: countdownlatch
74
83
  requirement: !ruby/object:Gem::Requirement
84
+ none: false
75
85
  requirements:
76
- - - '>='
86
+ - - ! '>='
77
87
  - !ruby/object:Gem::Version
78
88
  version: '0'
79
89
  type: :runtime
80
90
  prerelease: false
81
91
  version_requirements: !ruby/object:Gem::Requirement
92
+ none: false
82
93
  requirements:
83
- - - '>='
94
+ - - ! '>='
84
95
  - !ruby/object:Gem::Version
85
96
  version: '0'
86
97
  - !ruby/object:Gem::Dependency
87
98
  name: deep_merge
88
99
  requirement: !ruby/object:Gem::Requirement
100
+ none: false
89
101
  requirements:
90
- - - '>='
102
+ - - ! '>='
91
103
  - !ruby/object:Gem::Version
92
104
  version: '0'
93
105
  type: :runtime
94
106
  prerelease: false
95
107
  version_requirements: !ruby/object:Gem::Requirement
108
+ none: false
96
109
  requirements:
97
- - - '>='
110
+ - - ! '>='
98
111
  - !ruby/object:Gem::Version
99
112
  version: '0'
100
113
  - !ruby/object:Gem::Dependency
101
114
  name: ffi
102
115
  requirement: !ruby/object:Gem::Requirement
116
+ none: false
103
117
  requirements:
104
118
  - - ~>
105
119
  - !ruby/object:Gem::Version
@@ -107,20 +121,7 @@ dependencies:
107
121
  type: :runtime
108
122
  prerelease: false
109
123
  version_requirements: !ruby/object:Gem::Requirement
110
- requirements:
111
- - - ~>
112
- - !ruby/object:Gem::Version
113
- version: '1.0'
114
- - !ruby/object:Gem::Dependency
115
- name: future-resource
116
- requirement: !ruby/object:Gem::Requirement
117
- requirements:
118
- - - ~>
119
- - !ruby/object:Gem::Version
120
- version: '1.0'
121
- type: :runtime
122
- prerelease: false
123
- version_requirements: !ruby/object:Gem::Requirement
124
+ none: false
124
125
  requirements:
125
126
  - - ~>
126
127
  - !ruby/object:Gem::Version
@@ -128,20 +129,23 @@ dependencies:
128
129
  - !ruby/object:Gem::Dependency
129
130
  name: girl_friday
130
131
  requirement: !ruby/object:Gem::Requirement
132
+ none: false
131
133
  requirements:
132
- - - '>='
134
+ - - ! '>='
133
135
  - !ruby/object:Gem::Version
134
136
  version: '0'
135
137
  type: :runtime
136
138
  prerelease: false
137
139
  version_requirements: !ruby/object:Gem::Requirement
140
+ none: false
138
141
  requirements:
139
- - - '>='
142
+ - - ! '>='
140
143
  - !ruby/object:Gem::Version
141
144
  version: '0'
142
145
  - !ruby/object:Gem::Dependency
143
146
  name: has-guarded-handlers
144
147
  requirement: !ruby/object:Gem::Requirement
148
+ none: false
145
149
  requirements:
146
150
  - - ~>
147
151
  - !ruby/object:Gem::Version
@@ -149,6 +153,7 @@ dependencies:
149
153
  type: :runtime
150
154
  prerelease: false
151
155
  version_requirements: !ruby/object:Gem::Requirement
156
+ none: false
152
157
  requirements:
153
158
  - - ~>
154
159
  - !ruby/object:Gem::Version
@@ -156,6 +161,7 @@ dependencies:
156
161
  - !ruby/object:Gem::Dependency
157
162
  name: logging
158
163
  requirement: !ruby/object:Gem::Requirement
164
+ none: false
159
165
  requirements:
160
166
  - - ~>
161
167
  - !ruby/object:Gem::Version
@@ -163,6 +169,7 @@ dependencies:
163
169
  type: :runtime
164
170
  prerelease: false
165
171
  version_requirements: !ruby/object:Gem::Requirement
172
+ none: false
166
173
  requirements:
167
174
  - - ~>
168
175
  - !ruby/object:Gem::Version
@@ -170,20 +177,23 @@ dependencies:
170
177
  - !ruby/object:Gem::Dependency
171
178
  name: pry
172
179
  requirement: !ruby/object:Gem::Requirement
180
+ none: false
173
181
  requirements:
174
- - - '>='
182
+ - - ! '>='
175
183
  - !ruby/object:Gem::Version
176
184
  version: '0'
177
185
  type: :runtime
178
186
  prerelease: false
179
187
  version_requirements: !ruby/object:Gem::Requirement
188
+ none: false
180
189
  requirements:
181
- - - '>='
190
+ - - ! '>='
182
191
  - !ruby/object:Gem::Version
183
192
  version: '0'
184
193
  - !ruby/object:Gem::Dependency
185
194
  name: punchblock
186
195
  requirement: !ruby/object:Gem::Requirement
196
+ none: false
187
197
  requirements:
188
198
  - - ~>
189
199
  - !ruby/object:Gem::Version
@@ -191,6 +201,7 @@ dependencies:
191
201
  type: :runtime
192
202
  prerelease: false
193
203
  version_requirements: !ruby/object:Gem::Requirement
204
+ none: false
194
205
  requirements:
195
206
  - - ~>
196
207
  - !ruby/object:Gem::Version
@@ -198,20 +209,23 @@ dependencies:
198
209
  - !ruby/object:Gem::Dependency
199
210
  name: rake
200
211
  requirement: !ruby/object:Gem::Requirement
212
+ none: false
201
213
  requirements:
202
- - - '>='
214
+ - - ! '>='
203
215
  - !ruby/object:Gem::Version
204
216
  version: '0'
205
217
  type: :runtime
206
218
  prerelease: false
207
219
  version_requirements: !ruby/object:Gem::Requirement
220
+ none: false
208
221
  requirements:
209
- - - '>='
222
+ - - ! '>='
210
223
  - !ruby/object:Gem::Version
211
224
  version: '0'
212
225
  - !ruby/object:Gem::Dependency
213
226
  name: ruby_speech
214
227
  requirement: !ruby/object:Gem::Requirement
228
+ none: false
215
229
  requirements:
216
230
  - - ~>
217
231
  - !ruby/object:Gem::Version
@@ -219,6 +233,7 @@ dependencies:
219
233
  type: :runtime
220
234
  prerelease: false
221
235
  version_requirements: !ruby/object:Gem::Requirement
236
+ none: false
222
237
  requirements:
223
238
  - - ~>
224
239
  - !ruby/object:Gem::Version
@@ -226,6 +241,7 @@ dependencies:
226
241
  - !ruby/object:Gem::Dependency
227
242
  name: thor
228
243
  requirement: !ruby/object:Gem::Requirement
244
+ none: false
229
245
  requirements:
230
246
  - - ~>
231
247
  - !ruby/object:Gem::Version
@@ -233,6 +249,7 @@ dependencies:
233
249
  type: :runtime
234
250
  prerelease: false
235
251
  version_requirements: !ruby/object:Gem::Requirement
252
+ none: false
236
253
  requirements:
237
254
  - - ~>
238
255
  - !ruby/object:Gem::Version
@@ -240,6 +257,7 @@ dependencies:
240
257
  - !ruby/object:Gem::Dependency
241
258
  name: aruba
242
259
  requirement: !ruby/object:Gem::Requirement
260
+ none: false
243
261
  requirements:
244
262
  - - ~>
245
263
  - !ruby/object:Gem::Version
@@ -247,6 +265,7 @@ dependencies:
247
265
  type: :development
248
266
  prerelease: false
249
267
  version_requirements: !ruby/object:Gem::Requirement
268
+ none: false
250
269
  requirements:
251
270
  - - ~>
252
271
  - !ruby/object:Gem::Version
@@ -254,62 +273,71 @@ dependencies:
254
273
  - !ruby/object:Gem::Dependency
255
274
  name: ci_reporter
256
275
  requirement: !ruby/object:Gem::Requirement
276
+ none: false
257
277
  requirements:
258
- - - '>='
278
+ - - ! '>='
259
279
  - !ruby/object:Gem::Version
260
280
  version: '0'
261
281
  type: :development
262
282
  prerelease: false
263
283
  version_requirements: !ruby/object:Gem::Requirement
284
+ none: false
264
285
  requirements:
265
- - - '>='
286
+ - - ! '>='
266
287
  - !ruby/object:Gem::Version
267
288
  version: '0'
268
289
  - !ruby/object:Gem::Dependency
269
290
  name: cucumber
270
291
  requirement: !ruby/object:Gem::Requirement
292
+ none: false
271
293
  requirements:
272
- - - '>='
294
+ - - ! '>='
273
295
  - !ruby/object:Gem::Version
274
296
  version: '0'
275
297
  type: :development
276
298
  prerelease: false
277
299
  version_requirements: !ruby/object:Gem::Requirement
300
+ none: false
278
301
  requirements:
279
- - - '>='
302
+ - - ! '>='
280
303
  - !ruby/object:Gem::Version
281
304
  version: '0'
282
305
  - !ruby/object:Gem::Dependency
283
306
  name: guard-cucumber
284
307
  requirement: !ruby/object:Gem::Requirement
308
+ none: false
285
309
  requirements:
286
- - - '>='
310
+ - - ! '>='
287
311
  - !ruby/object:Gem::Version
288
312
  version: '0'
289
313
  type: :development
290
314
  prerelease: false
291
315
  version_requirements: !ruby/object:Gem::Requirement
316
+ none: false
292
317
  requirements:
293
- - - '>='
318
+ - - ! '>='
294
319
  - !ruby/object:Gem::Version
295
320
  version: '0'
296
321
  - !ruby/object:Gem::Dependency
297
322
  name: guard-rspec
298
323
  requirement: !ruby/object:Gem::Requirement
324
+ none: false
299
325
  requirements:
300
- - - '>='
326
+ - - ! '>='
301
327
  - !ruby/object:Gem::Version
302
328
  version: '0'
303
329
  type: :development
304
330
  prerelease: false
305
331
  version_requirements: !ruby/object:Gem::Requirement
332
+ none: false
306
333
  requirements:
307
- - - '>='
334
+ - - ! '>='
308
335
  - !ruby/object:Gem::Version
309
336
  version: '0'
310
337
  - !ruby/object:Gem::Dependency
311
338
  name: rspec
312
339
  requirement: !ruby/object:Gem::Requirement
340
+ none: false
313
341
  requirements:
314
342
  - - ~>
315
343
  - !ruby/object:Gem::Version
@@ -317,6 +345,7 @@ dependencies:
317
345
  type: :development
318
346
  prerelease: false
319
347
  version_requirements: !ruby/object:Gem::Requirement
348
+ none: false
320
349
  requirements:
321
350
  - - ~>
322
351
  - !ruby/object:Gem::Version
@@ -324,57 +353,65 @@ dependencies:
324
353
  - !ruby/object:Gem::Dependency
325
354
  name: ruby_gntp
326
355
  requirement: !ruby/object:Gem::Requirement
356
+ none: false
327
357
  requirements:
328
- - - '>='
358
+ - - ! '>='
329
359
  - !ruby/object:Gem::Version
330
360
  version: '0'
331
361
  type: :development
332
362
  prerelease: false
333
363
  version_requirements: !ruby/object:Gem::Requirement
364
+ none: false
334
365
  requirements:
335
- - - '>='
366
+ - - ! '>='
336
367
  - !ruby/object:Gem::Version
337
368
  version: '0'
338
369
  - !ruby/object:Gem::Dependency
339
370
  name: simplecov
340
371
  requirement: !ruby/object:Gem::Requirement
372
+ none: false
341
373
  requirements:
342
- - - '>='
374
+ - - ! '>='
343
375
  - !ruby/object:Gem::Version
344
376
  version: '0'
345
377
  type: :development
346
378
  prerelease: false
347
379
  version_requirements: !ruby/object:Gem::Requirement
380
+ none: false
348
381
  requirements:
349
- - - '>='
382
+ - - ! '>='
350
383
  - !ruby/object:Gem::Version
351
384
  version: '0'
352
385
  - !ruby/object:Gem::Dependency
353
386
  name: simplecov-rcov
354
387
  requirement: !ruby/object:Gem::Requirement
388
+ none: false
355
389
  requirements:
356
- - - '>='
390
+ - - ! '>='
357
391
  - !ruby/object:Gem::Version
358
392
  version: '0'
359
393
  type: :development
360
394
  prerelease: false
361
395
  version_requirements: !ruby/object:Gem::Requirement
396
+ none: false
362
397
  requirements:
363
- - - '>='
398
+ - - ! '>='
364
399
  - !ruby/object:Gem::Version
365
400
  version: '0'
366
401
  - !ruby/object:Gem::Dependency
367
402
  name: yard
368
403
  requirement: !ruby/object:Gem::Requirement
404
+ none: false
369
405
  requirements:
370
- - - '>='
406
+ - - ! '>='
371
407
  - !ruby/object:Gem::Version
372
408
  version: '0'
373
409
  type: :development
374
410
  prerelease: false
375
411
  version_requirements: !ruby/object:Gem::Requirement
412
+ none: false
376
413
  requirements:
377
- - - '>='
414
+ - - ! '>='
378
415
  - !ruby/object:Gem::Version
379
416
  version: '0'
380
417
  description: Adhearsion is an open-source telephony development framework
@@ -549,26 +586,33 @@ files:
549
586
  - spec/support/punchblock_mocks.rb
550
587
  homepage: http://adhearsion.com
551
588
  licenses: []
552
- metadata: {}
553
589
  post_install_message:
554
590
  rdoc_options: []
555
591
  require_paths:
556
592
  - lib
557
593
  required_ruby_version: !ruby/object:Gem::Requirement
594
+ none: false
558
595
  requirements:
559
- - - '>='
596
+ - - ! '>='
560
597
  - !ruby/object:Gem::Version
561
598
  version: '0'
599
+ segments:
600
+ - 0
601
+ hash: 1745862243148562605
562
602
  required_rubygems_version: !ruby/object:Gem::Requirement
603
+ none: false
563
604
  requirements:
564
- - - '>='
605
+ - - ! '>='
565
606
  - !ruby/object:Gem::Version
566
607
  version: '0'
608
+ segments:
609
+ - 0
610
+ hash: 1745862243148562605
567
611
  requirements: []
568
612
  rubyforge_project:
569
- rubygems_version: 2.0.0
613
+ rubygems_version: 1.8.25
570
614
  signing_key:
571
- specification_version: 4
615
+ specification_version: 3
572
616
  summary: Adhearsion, open-source telephony development framework
573
617
  test_files:
574
618
  - features/app_generator.feature
checksums.yaml DELETED
@@ -1,7 +0,0 @@
1
- ---
2
- SHA1:
3
- metadata.gz: 5bbbc8216c0eedac94db68efd4e8e4e8dd0d4288
4
- data.tar.gz: 7e9d4fafd8f772bb5ce4c464e640939883753f98
5
- SHA512:
6
- metadata.gz: 357385621a3e271b7fb55be8a590d6452d489e51fde894ca1f38219b63c944bced8c1f1ac7cc188c321b2889fb813fee34ebb4085b6c3512d0a51ee40f101efc
7
- data.tar.gz: d84de1d7a33ffd8ea1529b6ee99629204d0e2458cf7462a9cf6787016c6fdc27a1c822b3947efaf1545b56f9942fa084359fe0f48e1411c905749bf46336ff06