asir 1.2.10 → 1.2.11

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,15 @@
1
+ ---
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ ZjlhNjgyMDRmYjU4ZDkwYTFmMzUzYjUzNGQwODkzMDBjYzgzOTIzOQ==
5
+ data.tar.gz: !binary |-
6
+ M2JiODU1OGU1NzUyZDY0NDE4ZDkyNTYwMTYzZjFiMTI5Zjc0Njg0Yg==
7
+ !binary "U0hBNTEy":
8
+ metadata.gz: !binary |-
9
+ ODZmMmIyMGNmOGY1MmU4MTVkMGY0NDYwNDE5YTYyNzE2NTQ5NDI0ZDBmYTg0
10
+ ODliMDQ0ZjEwY2ZkNGZjNzA0MGQzODljNWNkMzI3NDA3ZTZmNDEwMjBhN2Rk
11
+ NzZmM2QzZDJjMzkyOGQxZWM4NTVlOGJhM2YxMDdhZmIwYmRhM2M=
12
+ data.tar.gz: !binary |-
13
+ N2Q5MmY0ZTI4NmE3NGY3OGMxMjI1NTAzNmE3MjU2MTg4YWE5YzYzOTljYjM5
14
+ ZDZkOTEzOGM2MGY3MmI2YTRhNWYzNDQxMGViOWM2MThiNTI0MjMzODIzMWYy
15
+ ZDM3M2Q5MDA0OGVjMGE2ODI2NTMzNzRmNzgxYTAwYjIxZjkzMGE=
data/ChangeLog CHANGED
@@ -1,32 +1,38 @@
1
- 2012-06-20 Kurt A. Stephens <ks.github@kurtstephens.com>
1
+ 2013-09-26 Kurt A. Stephens <ks.github@kurtstephens.com>
2
+
3
+ * v1.2.11: New Version: Bug Fixes.
4
+ * bin/asir: Wrap Transport#run_server! with signal handlers.
5
+ * bin/asir: Fix handling of pid files.
6
+
7
+ 2013-06-20 Kurt A. Stephens <ks.github@kurtstephens.com>
2
8
 
3
9
  * v1.2.10: New Version: New Functionality.
4
10
  * Transport#around_serve_message callback.
5
11
 
6
- 2012-06-19 Kurt A. Stephens <ks.github@kurtstephens.com>
12
+ 2013-06-19 Kurt A. Stephens <ks.github@kurtstephens.com>
7
13
 
8
14
  * v1.2.9: New Version: Fixes, New Functionality.
9
15
  * ASIR::Error::Unforwardable.unforwardable is deprecated; use .modules.
10
16
  * ASIR::AdaptiveValue: refactor ASIR::RetryBehavior sleep values.
11
17
  * BUG: Transport#after_receive_message.call takes a Message::State.
12
18
 
13
- 2012-03-14 Kurt A. Stephens <ks.github@kurtstephens.com>
19
+ 2013-03-14 Kurt A. Stephens <ks.github@kurtstephens.com>
14
20
 
15
21
  * v1.2.8: New Version: Additional functionality.
16
22
  * Support #conduit_host.
17
23
 
18
- 2012-03-14 Kurt A. Stephens <ks.github@kurtstephens.com>
24
+ 2013-03-14 Kurt A. Stephens <ks.github@kurtstephens.com>
19
25
 
20
26
  * v1.2.7: New Version: Fixed for 1.9.2-p320.
21
27
  * YAML/Syck protocol changes.
22
28
  * New API: Transport#conduit_status.
23
29
 
24
- 2012-03-13 Kurt A. Stephens <ks.github@kurtstephens.com>
30
+ 2013-03-13 Kurt A. Stephens <ks.github@kurtstephens.com>
25
31
 
26
32
  * v1.2.6: New Version: additional functionality.
27
33
  * PayloadIO::UnexpectedResponse has #expected, #received attributes.
28
34
 
29
- 2012-03-12 Kurt A. Stephens <ks.github@kurtstephens.com>
35
+ 2013-03-12 Kurt A. Stephens <ks.github@kurtstephens.com>
30
36
 
31
37
  * v1.2.5: New Version: bin/asir.
32
38
  * Do not log error if pid_file does not exist.
@@ -35,7 +41,7 @@
35
41
  * export ASIR_CONDUIT=1 for asir start KIND conduit.
36
42
  * Remove pid_file if process is not running after asir stop.
37
43
 
38
- 2012-02-01 Kurt A. Stephens <ks.github@kurtstephens.com>
44
+ 2013-02-01 Kurt A. Stephens <ks.github@kurtstephens.com>
39
45
 
40
46
  * v1.2.4: New Version: Bug fixes.
41
47
  * Handle STDIO properly in potentially daemonized processes.
@@ -0,0 +1,7 @@
1
+ # -*- ruby -*-
2
+ guard 'rspec' do
3
+ watch(%r{^spec/.+_spec\.rb$})
4
+ watch(%r{^lib/(.+)\.rb$}) { |m| "spec/lib/#{m[1]}_spec.rb" }
5
+ watch('spec/spec_helper.rb') { "spec" }
6
+ end
7
+
@@ -27,8 +27,11 @@ Gem::Specification.new do |s|
27
27
  s.add_dependency "rack", "~> 1.4.1"
28
28
 
29
29
  s.add_development_dependency 'rake', '>= 0.9.0'
30
- s.add_development_dependency 'rspec', '~> 2.12.0'
30
+ s.add_development_dependency 'rspec', '~> 2.14.1'
31
+ s.add_development_dependency 'rspec-mocks', '~> 2.14.3'
31
32
  s.add_development_dependency 'simplecov', '>= 0.1'
33
+ s.add_development_dependency 'guard', '~> 1.8'
34
+ s.add_development_dependency 'guard-rspec', '~> 3.1'
32
35
  if (RUBY_ENGINE rescue 'UNKNOWN') =~ /jruby/i
33
36
  s.add_development_dependency 'spoon', '>= 0.0.1'
34
37
  end
@@ -3,7 +3,8 @@ set -x
3
3
  dir="$(cd "$(dirname $0)" && /bin/pwd)"
4
4
  PATH="$dir/../bin:$PATH"
5
5
  export RUBYLIB="$dir/../example:$dir/../lib"
6
- asir="asir verbose=9 config_rb=$dir/config/asir_config.rb"
6
+ asir="asir config_rb=$dir/config/asir_config.rb"
7
+ # asir="$asir verbose=9"
7
8
  args="$*"
8
9
  args="${args:-ALL}"
9
10
  # set -e
@@ -28,6 +29,9 @@ $asir stop webrick worker
28
29
  sleep 1
29
30
  $asir pid webrick worker
30
31
 
32
+ log_file="$($asir log webrick worker)"
33
+ echo log_file="$log_file"
34
+ cat $log_file
31
35
  ;;
32
36
  esac
33
37
 
@@ -98,7 +98,7 @@ class Main
98
98
  $stderr.puts " sel = #{sel.inspect}"
99
99
  end
100
100
  send(sel)
101
- rescue ::Exception => exc
101
+ rescue ::StandardError => exc
102
102
  $stderr.puts "#{log_str} ERROR\n#{exc.inspect}\n #{exc.backtrace * "\n "}"
103
103
  self.exit_code += 1
104
104
  raise
@@ -261,6 +261,7 @@ END
261
261
  end
262
262
 
263
263
  def write_pid_file! pid
264
+ log "pid_file #{pid_file}"
264
265
  File.open(pid_file, "w+") { | o | o.puts pid }
265
266
  File.chmod(0666, pid_file) rescue nil
266
267
  end
@@ -299,7 +300,7 @@ END
299
300
  File.unlink(pid_file) rescue nil
300
301
  end
301
302
  self
302
- rescue ::Exception => exc
303
+ rescue ::StandardError => exc
303
304
  msg = "ERROR pid #{$$}\n#{exc.inspect}\n #{exc.backtrace * "\n "}"
304
305
  log msg, :stderr
305
306
  raise
@@ -307,8 +308,9 @@ END
307
308
  end
308
309
 
309
310
  def kill_server!
310
- log "#{log_str} kill"
311
311
  pid = server_pid
312
+ log "#{log_str} pid_file #{pid_file}"
313
+ log "#{log_str} kill pid #{pid}"
312
314
  case stop_pid! pid
313
315
  when :not_running
314
316
  File.unlink(pid_file) rescue nil
@@ -328,8 +330,11 @@ END
328
330
  end
329
331
 
330
332
  def server_pid
331
- File.exist?(pid_file) &&
332
- File.read(pid_file).chomp!.to_i
333
+ File.exist?(pid_file) and
334
+ pid = File.read(pid_file).chomp! and
335
+ pid = pid.to_i and
336
+ pid > 1 and
337
+ pid
333
338
  end
334
339
 
335
340
  def _create_transport default_class
@@ -379,7 +384,9 @@ END
379
384
  $0 = "#{old_arg0} #{transport.message_count} #{message.identifier}"
380
385
  after_receive_message.call(transport, state)
381
386
  end
382
- transport.run_server!
387
+ transport.with_server_signals! do
388
+ transport.run_server!
389
+ end
383
390
  self
384
391
  end
385
392
 
@@ -421,12 +428,12 @@ END
421
428
  def process_running? pid
422
429
  case pid
423
430
  when false, nil
431
+ pid
424
432
  when Integer
425
- Process.kill(0, pid)
433
+ pid > 1 && Process.kill(0, pid) && pid
426
434
  else
427
435
  raise TypeError, "expected false, nil, Integer; given #{pid.inspect}"
428
436
  end
429
- pid
430
437
  rescue ::Errno::ESRCH
431
438
  false
432
439
  rescue ::Exception => exc
@@ -211,36 +211,51 @@ module ASIR
211
211
  def stop! force = false
212
212
  @running = false
213
213
  stop_server! if respond_to?(:stop_server!)
214
- raise Error::Terminate if force || @force_stop
214
+ if force || @force_stop
215
+ exc = @signal_exception || Error::Terminate.new("#{self} stop!")
216
+ @signal_exception = nil
217
+ raise exc
218
+ end
215
219
  self
216
220
  end
217
221
 
218
222
  def with_force_stop!
219
223
  force_stop_save = @force_stop
220
- @force_stop = true
221
- yield
222
- ensure
223
- @force_stop = force_stop_save
224
+ begin
225
+ @force_stop = true
226
+ yield
227
+ ensure
228
+ @force_stop = force_stop_save
229
+ end
224
230
  end
225
231
 
226
232
  def with_server_signals!
227
233
  old_trap = { }
228
- [ "TERM", "HUP" ].each do | sig |
229
- trap = proc do | *args |
230
- stop!
231
- @signal_exception = ::ASIR::Error::Terminate.new("#{self} by SIG#{sig} #{args.inspect} in #{__FILE__}:#{__LINE__}")
234
+ begin
235
+ in_with_server_signals = @in_with_server_signals
236
+ unless in_with_server_signals
237
+ @in_with_server_signals = true
238
+ [ "TERM", "HUP" ].each do | sig |
239
+ trap = proc do | *args |
240
+ @signal_exception = ::ASIR::Error::Terminate.
241
+ new("#{self} SIG#{sig} #{args.inspect} in #{__FILE__}:#{__LINE__}")
242
+ stop!
243
+ end
244
+ old_trap[sig] = Signal.trap(sig, trap)
245
+ end
246
+ end
247
+ yield
248
+ unless in_with_server_signals
249
+ if exc = @signal_exception
250
+ @signal_exception = nil
251
+ raise exc
252
+ end
253
+ end
254
+ ensure
255
+ # $stderr.puts "old_trap = #{old_trap.inspect}"
256
+ old_trap.each do | sig, trap |
257
+ Signal.trap(sig, trap) rescue nil
232
258
  end
233
- old_trap[sig] = Signal.trap(sig, trap)
234
- end
235
- yield
236
- if exc = @signal_exception
237
- @signal_exception = nil
238
- raise exc
239
- end
240
- ensure
241
- # $stderr.puts "old_trap = #{old_trap.inspect}"
242
- old_trap.each do | sig, trap |
243
- Signal.trap(sig, trap) rescue nil
244
259
  end
245
260
  end
246
261
 
@@ -1,3 +1,3 @@
1
1
  module ASIR
2
- VERSION = "1.2.10"
2
+ VERSION = "1.2.11"
3
3
  end
@@ -1,4 +1,4 @@
1
- require File.expand_path('../spec_helper', __FILE__)
1
+ require 'spec_helper'
2
2
 
3
3
  require 'asir'
4
4
 
@@ -1,4 +1,4 @@
1
- require File.expand_path('../spec_helper', __FILE__)
1
+ require 'spec_helper'
2
2
 
3
3
  require 'asir'
4
4
  require 'asir/transport/demux'
@@ -1,4 +1,4 @@
1
- require File.expand_path('../spec_helper', __FILE__)
1
+ require 'spec_helper'
2
2
 
3
3
  $:.unshift File.expand_path('../../example', __FILE__)
4
4
 
@@ -0,0 +1,57 @@
1
+ require 'asir/main'
2
+
3
+ describe ASIR::Main do
4
+ let(:main) { ASIR::Main.new }
5
+
6
+ context "#server_pid" do
7
+ let(:pid_file) do
8
+ pid_file = "/tmp/#{$$}.#{rand(10000)}.pid"
9
+ File.exist?(pid_file).should == false
10
+ pid_file
11
+ end
12
+ before(:each) { allow(main).to receive(:pid_file).and_return(pid_file) }
13
+ after(:each) { File.unlink(pid_file) rescue nil }
14
+
15
+ it "should return non-true if pid_file does not exist" do
16
+ main.server_pid.should == false
17
+ end
18
+
19
+ it "should return non-true if pid_file is empty" do
20
+ File.open(pid_file, "w+") { | fh | }
21
+ main.server_pid.should == nil
22
+ end
23
+
24
+ it "should return non-true if pid_file is empty" do
25
+ File.open(pid_file, "w+") { | fh | }
26
+ main.server_pid.should == nil
27
+ end
28
+
29
+ it "should return non-true if pid_file has an empty line" do
30
+ File.open(pid_file, "w+") { | fh | fh.puts "" }
31
+ main.server_pid.should == false
32
+ end
33
+
34
+ it "should return non-true if pid_file is broken" do
35
+ File.open(pid_file, "w+") { | fh | "asdfsd" }
36
+ main.server_pid.should == nil
37
+ end
38
+
39
+ it "should return pid if pid_file contains a pid" do
40
+ File.open(pid_file, "w+") { | fh | fh.puts($$.to_s) }
41
+ main.server_pid.should == $$
42
+ end
43
+ end
44
+
45
+ context "#process_running?" do
46
+ it "should return false for invalid values." do
47
+ main.process_running?(nil).should == nil
48
+ main.process_running?(false).should == false
49
+ main.process_running?(0).should == false
50
+ main.process_running?(1).should == false
51
+ end
52
+
53
+ it "should return pid for a live process." do
54
+ main.process_running?($$).should == $$
55
+ end
56
+ end
57
+ end
@@ -1,6 +1,4 @@
1
- require File.expand_path('../spec_helper', __FILE__)
2
-
3
- $:.unshift File.expand_path('../../example', __FILE__)
1
+ require 'spec_helper'
4
2
 
5
3
  require 'asir'
6
4
 
@@ -1,4 +1,4 @@
1
- require File.expand_path('../spec_helper', __FILE__)
1
+ require 'spec_helper'
2
2
 
3
3
  require 'asir'
4
4
 
@@ -14,18 +14,19 @@ describe "ASIR Performance" do
14
14
  object.class.asir.transport = transport
15
15
  end
16
16
 
17
- it 'Raw message time' do
17
+ it 'Message time using Transport::Local, Coder::Identity' do
18
+ @desc = 'Raw messaging'
18
19
  run! do
19
20
  object.return_argument :this_value
20
21
  end
21
- $raw_t = @t # FIXME!
22
- end
22
+ $raw_t = @t
23
23
 
24
- it 'Message time using Transport::Local, Coder::Identity' do
24
+ @desc = 'Message using Transport::Local, Coder::Identity'
25
25
  run! do
26
26
  object.asir.return_argument :this_value
27
27
  end
28
- that_t = $raw_t # FIXME!
28
+
29
+ that_t = $raw_t
29
30
  this_t = @t
30
31
  $stderr.puts "\nThis .vs. Raw: #{this_t[:ms_per_n] / that_t[:ms_per_n]} ms/msg / ms/msg"
31
32
  end
@@ -35,3 +35,10 @@ module ASIR
35
35
  end
36
36
  end
37
37
 
38
+ gem 'rspec-mocks'
39
+ require 'rspec/mocks'
40
+
41
+ RSpec.configure do |config|
42
+ config.mock_with :rspec
43
+ # config.order = "random" # ex04.rb before ex05.rb
44
+ end
@@ -1,4 +1,4 @@
1
- require File.expand_path('../spec_helper', __FILE__)
1
+ require 'spec_helper'
2
2
 
3
3
  require 'asir'
4
4
 
@@ -1,4 +1,4 @@
1
- require File.expand_path('../spec_helper', __FILE__)
1
+ require 'spec_helper'
2
2
  require 'asir/coder/yaml'
3
3
 
4
4
  describe "ASIR::Coder::Yaml" do
metadata CHANGED
@@ -1,20 +1,18 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: asir
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.10
5
- prerelease:
4
+ version: 1.2.11
6
5
  platform: ruby
7
6
  authors:
8
7
  - Kurt Stephens
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2013-06-20 00:00:00.000000000 Z
11
+ date: 2013-09-27 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: uuid
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
17
  - - ~>
20
18
  - !ruby/object:Gem::Version
@@ -22,7 +20,6 @@ dependencies:
22
20
  type: :runtime
23
21
  prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
23
  requirements:
27
24
  - - ~>
28
25
  - !ruby/object:Gem::Version
@@ -30,7 +27,6 @@ dependencies:
30
27
  - !ruby/object:Gem::Dependency
31
28
  name: httpclient
32
29
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
30
  requirements:
35
31
  - - ~>
36
32
  - !ruby/object:Gem::Version
@@ -38,7 +34,6 @@ dependencies:
38
34
  type: :runtime
39
35
  prerelease: false
40
36
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
37
  requirements:
43
38
  - - ~>
44
39
  - !ruby/object:Gem::Version
@@ -46,7 +41,6 @@ dependencies:
46
41
  - !ruby/object:Gem::Dependency
47
42
  name: rack
48
43
  requirement: !ruby/object:Gem::Requirement
49
- none: false
50
44
  requirements:
51
45
  - - ~>
52
46
  - !ruby/object:Gem::Version
@@ -54,7 +48,6 @@ dependencies:
54
48
  type: :runtime
55
49
  prerelease: false
56
50
  version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
51
  requirements:
59
52
  - - ~>
60
53
  - !ruby/object:Gem::Version
@@ -62,7 +55,6 @@ dependencies:
62
55
  - !ruby/object:Gem::Dependency
63
56
  name: rake
64
57
  requirement: !ruby/object:Gem::Requirement
65
- none: false
66
58
  requirements:
67
59
  - - ! '>='
68
60
  - !ruby/object:Gem::Version
@@ -70,7 +62,6 @@ dependencies:
70
62
  type: :development
71
63
  prerelease: false
72
64
  version_requirements: !ruby/object:Gem::Requirement
73
- none: false
74
65
  requirements:
75
66
  - - ! '>='
76
67
  - !ruby/object:Gem::Version
@@ -78,23 +69,34 @@ dependencies:
78
69
  - !ruby/object:Gem::Dependency
79
70
  name: rspec
80
71
  requirement: !ruby/object:Gem::Requirement
81
- none: false
82
72
  requirements:
83
73
  - - ~>
84
74
  - !ruby/object:Gem::Version
85
- version: 2.12.0
75
+ version: 2.14.1
86
76
  type: :development
87
77
  prerelease: false
88
78
  version_requirements: !ruby/object:Gem::Requirement
89
- none: false
90
79
  requirements:
91
80
  - - ~>
92
81
  - !ruby/object:Gem::Version
93
- version: 2.12.0
82
+ version: 2.14.1
83
+ - !ruby/object:Gem::Dependency
84
+ name: rspec-mocks
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ~>
88
+ - !ruby/object:Gem::Version
89
+ version: 2.14.3
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ~>
95
+ - !ruby/object:Gem::Version
96
+ version: 2.14.3
94
97
  - !ruby/object:Gem::Dependency
95
98
  name: simplecov
96
99
  requirement: !ruby/object:Gem::Requirement
97
- none: false
98
100
  requirements:
99
101
  - - ! '>='
100
102
  - !ruby/object:Gem::Version
@@ -102,11 +104,38 @@ dependencies:
102
104
  type: :development
103
105
  prerelease: false
104
106
  version_requirements: !ruby/object:Gem::Requirement
105
- none: false
106
107
  requirements:
107
108
  - - ! '>='
108
109
  - !ruby/object:Gem::Version
109
110
  version: '0.1'
111
+ - !ruby/object:Gem::Dependency
112
+ name: guard
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ~>
116
+ - !ruby/object:Gem::Version
117
+ version: '1.8'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ~>
123
+ - !ruby/object:Gem::Version
124
+ version: '1.8'
125
+ - !ruby/object:Gem::Dependency
126
+ name: guard-rspec
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - ~>
130
+ - !ruby/object:Gem::Version
131
+ version: '3.1'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - ~>
137
+ - !ruby/object:Gem::Version
138
+ version: '3.1'
110
139
  description: Abstracting Services in Ruby
111
140
  email: ks.ruby@kurtstephens.com
112
141
  executables:
@@ -120,6 +149,7 @@ files:
120
149
  - .travis.yml
121
150
  - ChangeLog
122
151
  - Gemfile
152
+ - Guardfile
123
153
  - README.textile
124
154
  - Rakefile
125
155
  - VERSION
@@ -248,6 +278,7 @@ files:
248
278
  - spec/debug_helper.rb
249
279
  - spec/demux_spec.rb
250
280
  - spec/example_spec.rb
281
+ - spec/lib/asir/main_spec.rb
251
282
  - spec/message_spec.rb
252
283
  - spec/performance_spec.rb
253
284
  - spec/retry_behavior_spec.rb
@@ -260,34 +291,27 @@ files:
260
291
  - stylesheets/slides.css
261
292
  homepage: http://github.com/kstephens/abstracting_services_in_ruby
262
293
  licenses: []
294
+ metadata: {}
263
295
  post_install_message:
264
296
  rdoc_options:
265
297
  - --charset=UTF-8
266
298
  require_paths:
267
299
  - lib
268
300
  required_ruby_version: !ruby/object:Gem::Requirement
269
- none: false
270
301
  requirements:
271
302
  - - ! '>='
272
303
  - !ruby/object:Gem::Version
273
304
  version: '0'
274
- segments:
275
- - 0
276
- hash: 2998837259913580415
277
305
  required_rubygems_version: !ruby/object:Gem::Requirement
278
- none: false
279
306
  requirements:
280
307
  - - ! '>='
281
308
  - !ruby/object:Gem::Version
282
309
  version: '0'
283
- segments:
284
- - 0
285
- hash: 2998837259913580415
286
310
  requirements: []
287
311
  rubyforge_project:
288
- rubygems_version: 1.8.25
312
+ rubygems_version: 2.0.5
289
313
  signing_key:
290
- specification_version: 3
314
+ specification_version: 4
291
315
  summary: Abstracting Services in Ruby
292
316
  test_files:
293
317
  - spec/adaptive_value_spec.rb
@@ -295,6 +319,7 @@ test_files:
295
319
  - spec/debug_helper.rb
296
320
  - spec/demux_spec.rb
297
321
  - spec/example_spec.rb
322
+ - spec/lib/asir/main_spec.rb
298
323
  - spec/message_spec.rb
299
324
  - spec/performance_spec.rb
300
325
  - spec/retry_behavior_spec.rb