dry-component 0.3.0 → 0.4.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 7f3c7bc83200152d244ec311a77affb840f5340f
4
- data.tar.gz: e437ce4b730ce49d617fbc86a4bc46f089a1df1e
3
+ metadata.gz: 62d04c04b930c78a211b75bbe2b12e81709d5d72
4
+ data.tar.gz: 4142d98f2cbea51f1d33f3864b8a952ede77416a
5
5
  SHA512:
6
- metadata.gz: 3ce61aa0a4bc7e95f486adfe712b4f73a585631d5dba1e2e441ecbef99aef9da82a49039c605ec6651bad6db3d285320ec4fd97f74db3dd5bb66630fc402a468
7
- data.tar.gz: c095e172c4af2ffeff3056eddaea8bd0281244cea470379738dc73e943978d18223a4c12b82beafa904692e7758c5661f379370617b069b4cb6669d89b7939ab
6
+ metadata.gz: 461b2819291b294fca018c24f12e392ee1fe3e9272232b9b87c79f5031968d74d9f91a2a7e52935ebc4c59fb3ec8f33e103eeeb94160a0ce5cceea184c9492c1
7
+ data.tar.gz: 0441572d29a273a379388e6bfb2f7a6c31b94ffd55051a55ebdfe1b7eac35fb57004443334d632b5f2fa857099f16bdd38c72dbe44617c57b2277923db75f3cd
@@ -5,7 +5,6 @@ bundler_args: --without tools
5
5
  script:
6
6
  - bundle exec rake spec
7
7
  rvm:
8
- - 2.0
9
8
  - 2.1
10
9
  - 2.2
11
10
  - 2.3.1
@@ -1,6 +1,57 @@
1
+ # 0.4.2 - 2016-07-26
2
+
3
+ ### Fixed
4
+
5
+ - Ensure file components can be loaded when they're requested for the first time using their shorthand container identifier (i.e. with the container's default namespace removed) (timriley)
6
+
7
+ # 0.4.1 - 2016-07-26 [YANKED]
8
+
9
+ ### Fixed
10
+
11
+ - Require the 0.4.0 release of dry-auto_inject for the features below (in 0.4.0) to work properly (timriley)
12
+
13
+ [Compare v0.3.0...v0.4.0](https://github.com/dry-rb/dry-component/compare/v0.4.0...v0.4.1)
14
+
15
+ # 0.4.0 - 2016-07-26 [YANKED]
16
+
17
+ ### Added
18
+
19
+ - Support for supplying a default namespace to a container, which is passed to the container's injector to allow for convenient shorthand access to registered objects in the same namespace (timriley in [#20](https://github.com/dry-rb/dry-component/pull/20))
20
+
21
+ ```ruby
22
+ # Set up container with default namespace
23
+ module Admin
24
+ class Container < Dry::Component::Container
25
+ configure do |config|
26
+ config.root = Pathname.new(__dir__).join("../..")
27
+ config.default_namespace = "admin"
28
+ end
29
+ end
30
+
31
+ Import = Container.injector
32
+ end
33
+
34
+ module Admin
35
+ class CreateUser
36
+ # "users.repository" will resolve an Admin::Users::Repository instance,
37
+ # where previously you had to identify it as "admin.users.repository"
38
+ include Admin::Import["users.repository"]
39
+ end
40
+ end
41
+ ```
42
+
43
+ - Support for supplying to options directly to dry-auto_inject's `Builder` via `Dry::Component::Container#injector(options)`. This allows you to provide dry-auto_inject customizations like your own container of injection strategies (timriley in [#20](https://github.com/dry-rb/dry-component/pull/20))
44
+ - Support for accessing all available injector strategies, not just the defaults (e.g. `MyContainer.injector.some_custom_strategy`) (timriley in [#19](https://github.com/dry-rb/dry-component/pull/19))
45
+
46
+ ### Changed
47
+
48
+ - Subclasses of `Dry::Component::Container` no longer have an `Injector` constant automatically defined within them. The recommended approach is to save your own injector object to a constant, which allows you to pass options to it at the same time, e.g. `MyApp::Import = MyApp::Container.injector(my_options)` (timriley in [#19](https://github.com/dry-rb/dry-component/pull/19))
49
+
50
+ [Compare v0.3.0...v0.4.0](https://github.com/dry-rb/dry-component/compare/v0.3.0...v0.4.0)
51
+
1
52
  # 0.3.0 - 2016-06-18
2
53
 
3
- ## Changed
54
+ ### Changed
4
55
 
5
56
  Removed two pieces that are moving to dry-web:
6
57
 
@@ -8,20 +59,24 @@ Removed two pieces that are moving to dry-web:
8
59
  - Removed `Dry::Component::Config` and `options` setting from `Container` (timriley)
9
60
  - Changed `Component#configure` behavior so it can be run multiple times for configuration to be applied in multiple passes (timriley)
10
61
 
62
+ [Compare v0.2.0...v0.3.0](https://github.com/dry-rb/dry-component/compare/v0.2.0...v0.3.0)
63
+
11
64
  # 0.2.0 - 2016-06-13
12
65
 
13
- ## Changed
66
+ ### Changed
14
67
 
15
68
  - Component core directory is now `component/` by default (timriley)
16
69
  - Injector default stragegy is now whatever dry-auto_inject's default is (rather than hard-coding a particular default strategy for dry-component) (timriley)
17
70
 
18
- ## Fixed
71
+ ### Fixed
19
72
 
20
73
  - Fixed bug where specified auto-inject strategies were not respected (timriley)
21
74
 
75
+ [Compare v0.1.0...v0.2.0](https://github.com/dry-rb/dry-component/compare/v0.1.0...v0.2.0)
76
+
22
77
  # 0.1.0 - 2016-06-07
23
78
 
24
- ## Added
79
+ ### Added
25
80
 
26
81
  * Provide a dependency injector as an `Inject` constant inside any subclass of `Dry::Component::Container`. This injector supports all of `dry-auto_inject`'s default injection strategies, and will lazily load any dependencies as they are injected. It also supports arbitrarily switching strategies, so they can be used in different classes as required (e.g. `include MyComponent::Inject.args["dep"]`) (timriley)
27
82
  * Support aliased dependency names when calling the injector object (e.g. `MyComponent::Inject[foo: "my_app.foo", bar: "another.thing"]`) (timriley)
@@ -36,7 +91,7 @@ Removed two pieces that are moving to dry-web:
36
91
  end
37
92
  ```
38
93
 
39
- ## Changed
94
+ ### Changed
40
95
 
41
96
  * `Container.boot` now only makes a simple `require` for the boot file (solnic)
42
97
  * Container object is passed to `Container.finalize` blocks (solnic)
@@ -45,17 +100,21 @@ Removed two pieces that are moving to dry-web:
45
100
  * `Container.import_module` renamed to `.injector` (timriley)
46
101
  * Default injection strategy is now `kwargs`, courtesy of the new dry-auto_inject default (timriley)
47
102
 
103
+ [Compare v0.0.2...v0.1.0](https://github.com/dry-rb/dry-component/compare/v0.0.2...v0.1.0)
104
+
48
105
  # 0.0.2 - 2015-12-24
49
106
 
50
- ## Added
107
+ ### Added
51
108
 
52
109
  * Containers have a `name` setting (solnic)
53
110
  * Containers can be imported into one another (solnic)
54
111
 
55
- ## Changed
112
+ ### Changed
56
113
 
57
114
  * Container name is used to determine the name of its config file (solnic)
58
115
 
116
+ [Compare v0.0.1...v0.0.2](https://github.com/dry-rb/dry-component/compare/v0.0.1...v0.0.2)
117
+
59
118
  # 0.0.1 - 2015-12-24
60
119
 
61
120
  First public release, extracted from rodakase project
@@ -15,9 +15,11 @@ Gem::Specification.new do |spec|
15
15
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
16
16
  spec.require_paths = ['lib']
17
17
 
18
+ spec.required_ruby_version = '>= 2.1.0'
19
+
18
20
  spec.add_runtime_dependency 'inflecto', '>= 0.0.2'
19
21
  spec.add_runtime_dependency 'dry-container', '~> 0.3', '>= 0.3.4'
20
- spec.add_runtime_dependency 'dry-auto_inject', '~> 0.3'
22
+ spec.add_runtime_dependency 'dry-auto_inject', '>= 0.4.0'
21
23
  spec.add_runtime_dependency 'dry-configurable', '~> 0.1'
22
24
 
23
25
  spec.add_development_dependency 'bundler'
@@ -9,21 +9,19 @@ require 'dry/component/loader'
9
9
 
10
10
  module Dry
11
11
  module Component
12
+ FileNotFoundError = Class.new(StandardError)
13
+
12
14
  class Container
13
15
  extend Dry::Configurable
14
16
  extend Dry::Container::Mixin
15
17
 
16
18
  setting :name
19
+ setting :default_namespace
17
20
  setting :root, Pathname.pwd.freeze
18
21
  setting :core_dir, 'component'.freeze
19
22
  setting :auto_register
20
23
  setting :loader, Dry::Component::Loader
21
24
 
22
- def self.inherited(subclass)
23
- super
24
- subclass.const_set :Inject, subclass.injector
25
- end
26
-
27
25
  def self.configure(&block)
28
26
  super(&block)
29
27
 
@@ -63,8 +61,12 @@ module Dry
63
61
  freeze
64
62
  end
65
63
 
66
- def self.injector
67
- Injector.new(self)
64
+ def self.loader
65
+ @loader ||= config.loader.new(config)
66
+ end
67
+
68
+ def self.injector(options = {})
69
+ Injector.new(self, options: options)
68
70
  end
69
71
 
70
72
  def self.auto_register!(dir, &_block)
@@ -72,7 +74,7 @@ module Dry
72
74
 
73
75
  Dir["#{root}/#{dir}/**/*.rb"].each do |path|
74
76
  component_path = path.to_s.gsub("#{dir_root}/", '').gsub('.rb', '')
75
- config.loader.new(component_path).tap do |component|
77
+ loader.load(component_path).tap do |component|
76
78
  next if key?(component.identifier)
77
79
 
78
80
  Kernel.require component.path
@@ -121,7 +123,7 @@ module Dry
121
123
  end
122
124
 
123
125
  def self.load_component(key)
124
- component = config.loader.new(key)
126
+ component = loader.load(key)
125
127
  src_key = component.namespaces[0]
126
128
 
127
129
  if imports.key?(src_key)
@@ -133,7 +135,15 @@ module Dry
133
135
 
134
136
  import_container(src_key, src_container)
135
137
  else
136
- require_component(component) { |klass| register(key) { klass.new } }
138
+ begin
139
+ require_component(component) { |klass| register(key) { klass.new } }
140
+ rescue FileNotFoundError => e
141
+ if config.default_namespace
142
+ load_component("#{config.default_namespace}#{config.namespace_separator}#{component.identifier}")
143
+ else
144
+ raise e
145
+ end
146
+ end
137
147
  end
138
148
  end
139
149
 
@@ -144,7 +154,7 @@ module Dry
144
154
  Kernel.require component.path
145
155
  yield(component.constant) if block
146
156
  else
147
- fail ArgumentError, "could not resolve require file for #{component.identifier}"
157
+ fail FileNotFoundError, "could not resolve require file for #{component.identifier}"
148
158
  end
149
159
  end
150
160
 
@@ -2,23 +2,21 @@ require "dry-auto_inject"
2
2
 
3
3
  module Dry
4
4
  module Component
5
- class Injector
5
+ class Injector < BasicObject
6
6
  # @api private
7
7
  attr_reader :container
8
8
 
9
+ # @api private
10
+ attr_reader :options
11
+
9
12
  # @api private
10
13
  attr_reader :injector
11
14
 
12
15
  # @api private
13
- def initialize(container, strategy: nil, strategies_cache: nil)
16
+ def initialize(container, options: {}, strategy: :default)
14
17
  @container = container
15
- @strategies = strategies_cache
16
- @injector =
17
- if strategy
18
- Dry::AutoInject(container).send(strategy)
19
- else
20
- Dry::AutoInject(container)
21
- end
18
+ @options = options
19
+ @injector = ::Dry::AutoInject(container, options).__send__(strategy)
22
20
  end
23
21
 
24
22
  # @api public
@@ -27,37 +25,24 @@ module Dry
27
25
  injector[*deps]
28
26
  end
29
27
 
30
- # @api public
31
- def args
32
- strategies[:args]
33
- end
34
-
35
- # @api public
36
- def hash
37
- strategies[:hash]
28
+ def method_missing(name, *args, &block)
29
+ ::Dry::Component::Injector.new(container, options: options, strategy: name)
38
30
  end
39
31
 
40
- # @api public
41
- def kwargs
42
- strategies[:kwargs]
32
+ def respond_to?(name, include_private = false)
33
+ injector.respond_to?(name, include_private)
43
34
  end
44
35
 
45
36
  private
46
37
 
47
38
  def load_components(*components)
48
39
  components = components.dup
49
- aliases = components.last.is_a?(Hash) ? components.pop : {}
40
+ aliases = components.last.is_a?(::Hash) ? components.pop : {}
50
41
 
51
42
  (components + aliases.values).each do |key|
52
43
  container.load_component(key) unless container.key?(key)
53
44
  end
54
45
  end
55
-
56
- def strategies
57
- @strategies ||= Hash.new do |cache, strategy|
58
- cache[strategy] = self.class.new(container, strategy: strategy, strategies_cache: cache)
59
- end
60
- end
61
46
  end
62
47
  end
63
48
  end
@@ -3,33 +3,56 @@ require 'inflecto'
3
3
  module Dry
4
4
  module Component
5
5
  class Loader
6
- IDENTIFIER_SEPARATOR = '.'.freeze
7
- PATH_SEPARATOR = '/'.freeze
6
+ class Component
7
+ attr_reader :loader
8
+ attr_reader :identifier, :path, :file
8
9
 
9
- attr_reader :identifier, :path, :file
10
+ def initialize(loader, input)
11
+ @loader = loader
10
12
 
11
- def initialize(input)
12
- @identifier = input.to_s.gsub(PATH_SEPARATOR, IDENTIFIER_SEPARATOR)
13
- @path = input.to_s.gsub(IDENTIFIER_SEPARATOR, PATH_SEPARATOR)
14
- @file = "#{path}.rb"
15
- end
13
+ @identifier = input.to_s.gsub(loader.path_separator, loader.namespace_separator)
14
+ if loader.default_namespace
15
+ re = /^#{Regexp.escape(loader.default_namespace)}#{Regexp.escape(loader.namespace_separator)}/
16
+ @identifier = @identifier.sub(re, '')
17
+ end
16
18
 
17
- def namespaces
18
- identifier.split(IDENTIFIER_SEPARATOR).map(&:to_sym)
19
- end
19
+ @path = input.to_s.gsub(loader.namespace_separator, loader.path_separator)
20
+ @file = "#{path}.rb"
21
+ end
20
22
 
21
- def constant
22
- Inflecto.constantize(name)
23
- end
23
+ def namespaces
24
+ identifier.split(loader.namespace_separator).map(&:to_sym)
25
+ end
26
+
27
+ def constant
28
+ Inflecto.constantize(constant_name)
29
+ end
30
+
31
+ def instance(*args)
32
+ constant.new(*args)
33
+ end
24
34
 
25
- def instance(*args)
26
- constant.new(*args)
35
+ private
36
+
37
+ def constant_name
38
+ Inflecto.camelize(path)
39
+ end
27
40
  end
28
41
 
29
- private
42
+ PATH_SEPARATOR = '/'.freeze
43
+
44
+ attr_reader :default_namespace
45
+ attr_reader :namespace_separator
46
+ attr_reader :path_separator
47
+
48
+ def initialize(config)
49
+ @default_namespace = config.default_namespace
50
+ @namespace_separator = config.namespace_separator
51
+ @path_separator = PATH_SEPARATOR
52
+ end
30
53
 
31
- def name
32
- Inflecto.camelize(path)
54
+ def load(component_path)
55
+ Component.new(self, component_path)
33
56
  end
34
57
  end
35
58
  end
@@ -1,5 +1,5 @@
1
1
  module Dry
2
2
  module Component
3
- VERSION = '0.3.0'.freeze
3
+ VERSION = '0.4.2'.freeze
4
4
  end
5
5
  end
@@ -0,0 +1,5 @@
1
+ module Namespaced
2
+ class Bar
3
+ include Test::Container.injector["foo"]
4
+ end
5
+ end
@@ -0,0 +1,4 @@
1
+ module Namespaced
2
+ class Foo
3
+ end
4
+ end
@@ -1,7 +1,7 @@
1
1
  require 'dry/component/container'
2
2
 
3
3
  RSpec.describe Dry::Component::Container, '.auto_register!' do
4
- context 'with the standard loader' do
4
+ context 'standard loader' do
5
5
  before do
6
6
  class Test::Container < Dry::Component::Container
7
7
  configure do |config|
@@ -18,15 +18,39 @@ RSpec.describe Dry::Component::Container, '.auto_register!' do
18
18
  it { expect(Test::Container['bar.baz']).to be_an_instance_of(Bar::Baz) }
19
19
  end
20
20
 
21
+ context 'standard loader with a default namespace configured' do
22
+ before do
23
+ class Test::Container < Dry::Component::Container
24
+ configure do |config|
25
+ config.root = SPEC_ROOT.join('fixtures').realpath
26
+ config.default_namespace = 'namespaced'
27
+ end
28
+
29
+ load_paths!('namespaced_components')
30
+ auto_register!('namespaced_components')
31
+ end
32
+ end
33
+
34
+ specify { expect(Test::Container['bar']).to be_a(Namespaced::Bar) }
35
+ specify { expect(Test::Container['bar'].foo).to be_a(Namespaced::Foo) }
36
+ specify { expect(Test::Container['foo']).to be_a(Namespaced::Foo) }
37
+ end
38
+
21
39
  context 'with a custom loader' do
22
40
  before do
23
41
  class Test::Loader < Dry::Component::Loader
24
- def identifier
25
- super.gsub('.', '-')
42
+ class Component < Dry::Component::Loader::Component
43
+ def identifier
44
+ super + ".yay"
45
+ end
46
+
47
+ def instance(*args)
48
+ constant.respond_to?(:call) ? constant : constant.new(*args)
49
+ end
26
50
  end
27
51
 
28
- def instance(*args)
29
- constant.respond_to?(:call) ? constant : constant.new(*args)
52
+ def load(component_path)
53
+ Component.new(self, component_path)
30
54
  end
31
55
  end
32
56
 
@@ -41,9 +65,9 @@ RSpec.describe Dry::Component::Container, '.auto_register!' do
41
65
  end
42
66
  end
43
67
 
44
- it { expect(Test::Container['foo']).to be_an_instance_of(Foo) }
45
- it { expect(Test::Container['bar']).to eq(Bar) }
46
- it { expect(Test::Container['bar'].call).to eq("Welcome to my Moe's Tavern!") }
47
- it { expect(Test::Container['bar-baz']).to be_an_instance_of(Bar::Baz) }
68
+ it { expect(Test::Container['foo.yay']).to be_an_instance_of(Foo) }
69
+ it { expect(Test::Container['bar.yay']).to eq(Bar) }
70
+ it { expect(Test::Container['bar.yay'].call).to eq("Welcome to my Moe's Tavern!") }
71
+ it { expect(Test::Container['bar.baz.yay']).to be_an_instance_of(Bar::Baz) }
48
72
  end
49
73
  end
@@ -57,7 +57,7 @@ RSpec.describe Dry::Component::Container, '.import' do
57
57
  end
58
58
 
59
59
  module Test
60
- Import = Container::Inject
60
+ Import = Container.injector
61
61
  end
62
62
 
63
63
  class Test::Foo
@@ -0,0 +1,29 @@
1
+ require "dry/component/container"
2
+
3
+ RSpec.describe Dry::Component::Container, ".injector" do
4
+ context "injector_options provided" do
5
+ it "builds an injector with the provided options" do
6
+ Test::Foo = Class.new
7
+
8
+ Test::Container = Class.new(Dry::Component::Container) do
9
+ register "foo", Test::Foo.new
10
+ end
11
+
12
+ Test::Inject = Test::Container.injector(strategies: {
13
+ default: Dry::AutoInject::Strategies::Args,
14
+ australian: Dry::AutoInject::Strategies::Args
15
+ })
16
+
17
+ injected_class = Class.new do
18
+ include Test::Inject.australian["foo"]
19
+ end
20
+
21
+ obj = injected_class.new
22
+ expect(obj.foo).to be_a Test::Foo
23
+
24
+ another = Object.new
25
+ obj = injected_class.new(another)
26
+ expect(obj.foo).to eq another
27
+ end
28
+ end
29
+ end
@@ -14,7 +14,7 @@ RSpec.describe Dry::Component::Container do
14
14
  end
15
15
 
16
16
  module Test
17
- Import = Container::Inject
17
+ Import = Container.injector
18
18
  end
19
19
  end
20
20
 
@@ -7,11 +7,13 @@ RSpec.describe Dry::Component::Injector do
7
7
 
8
8
  load_paths! "lib"
9
9
  end
10
+
11
+ Test::Inject = Test::Container.injector
10
12
  end
11
13
 
12
14
  it "supports args injection by default" do
13
15
  obj = Class.new do
14
- include Test::Container::Inject["test.dep"]
16
+ include Test::Inject["test.dep"]
15
17
  end.new
16
18
 
17
19
  expect(obj.dep).to be_a Test::Dep
@@ -19,7 +21,7 @@ RSpec.describe Dry::Component::Injector do
19
21
 
20
22
  it "supports args injection with explicit method" do
21
23
  obj = Class.new do
22
- include Test::Container::Inject.args["test.dep"]
24
+ include Test::Inject.args["test.dep"]
23
25
  end.new
24
26
 
25
27
  expect(obj.dep).to be_a Test::Dep
@@ -27,7 +29,7 @@ RSpec.describe Dry::Component::Injector do
27
29
 
28
30
  it "supports hash injection" do
29
31
  obj = Class.new do
30
- include Test::Container::Inject.hash["test.dep"]
32
+ include Test::Inject.hash["test.dep"]
31
33
  end.new
32
34
 
33
35
  expect(obj.dep).to be_a Test::Dep
@@ -35,7 +37,7 @@ RSpec.describe Dry::Component::Injector do
35
37
 
36
38
  it "support kwargs injection" do
37
39
  obj = Class.new do
38
- include Test::Container::Inject.kwargs["test.dep"]
40
+ include Test::Inject.kwargs["test.dep"]
39
41
  end.new
40
42
 
41
43
  expect(obj.dep).to be_a Test::Dep
@@ -43,7 +45,7 @@ RSpec.describe Dry::Component::Injector do
43
45
 
44
46
  it "allows injection strategies to be swapped" do
45
47
  obj = Class.new do
46
- include Test::Container::Inject.kwargs.hash["test.dep"]
48
+ include Test::Inject.kwargs.hash["test.dep"]
47
49
  end.new
48
50
 
49
51
  expect(obj.dep).to be_a Test::Dep
@@ -51,7 +53,7 @@ RSpec.describe Dry::Component::Injector do
51
53
 
52
54
  it "supports aliases" do
53
55
  obj = Class.new do
54
- include Test::Container::Inject[foo: "test.dep"]
56
+ include Test::Inject[foo: "test.dep"]
55
57
  end.new
56
58
 
57
59
  expect(obj.foo).to be_a Test::Dep
@@ -40,20 +40,23 @@ RSpec.describe Dry::Component::Loader do
40
40
  end
41
41
  end
42
42
 
43
+ let(:container) { Class.new(Dry::Component::Container) }
44
+ let(:loader) { Dry::Component::Loader.new(container.config) }
45
+
43
46
  context 'from identifier as a symbol' do
44
- subject(:component) { Dry::Component::Loader.new(:'test.bar') }
47
+ subject(:component) { loader.load(:'test.bar') }
45
48
 
46
49
  it_behaves_like 'a valid component'
47
50
  end
48
51
 
49
52
  context 'from identifier as a string' do
50
- subject(:component) { Dry::Component::Loader.new('test.bar') }
53
+ subject(:component) { loader.load('test.bar') }
51
54
 
52
55
  it_behaves_like 'a valid component'
53
56
  end
54
57
 
55
58
  context 'from path' do
56
- subject(:component) { Dry::Component::Loader.new('test/bar') }
59
+ subject(:component) { loader.load('test/bar') }
57
60
 
58
61
  it_behaves_like 'a valid component'
59
62
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dry-component
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.4.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Piotr Solnica
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-06-22 00:00:00.000000000 Z
11
+ date: 2016-07-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: inflecto
@@ -48,16 +48,16 @@ dependencies:
48
48
  name: dry-auto_inject
49
49
  requirement: !ruby/object:Gem::Requirement
50
50
  requirements:
51
- - - "~>"
51
+ - - ">="
52
52
  - !ruby/object:Gem::Version
53
- version: '0.3'
53
+ version: 0.4.0
54
54
  type: :runtime
55
55
  prerelease: false
56
56
  version_requirements: !ruby/object:Gem::Requirement
57
57
  requirements:
58
- - - "~>"
58
+ - - ">="
59
59
  - !ruby/object:Gem::Version
60
- version: '0.3'
60
+ version: 0.4.0
61
61
  - !ruby/object:Gem::Dependency
62
62
  name: dry-configurable
63
63
  requirement: !ruby/object:Gem::Requirement
@@ -152,6 +152,8 @@ files:
152
152
  - spec/fixtures/lazytest/lib/test/models.rb
153
153
  - spec/fixtures/lazytest/lib/test/models/book.rb
154
154
  - spec/fixtures/lazytest/lib/test/models/user.rb
155
+ - spec/fixtures/namespaced_components/namespaced/bar.rb
156
+ - spec/fixtures/namespaced_components/namespaced/foo.rb
155
157
  - spec/fixtures/other/config/boot/bar.rb
156
158
  - spec/fixtures/other/lib/test/dep.rb
157
159
  - spec/fixtures/other/lib/test/foo.rb
@@ -169,6 +171,7 @@ files:
169
171
  - spec/spec_helper.rb
170
172
  - spec/unit/container/auto_register_spec.rb
171
173
  - spec/unit/container/import_spec.rb
174
+ - spec/unit/container/injector_spec.rb
172
175
  - spec/unit/container_spec.rb
173
176
  - spec/unit/injector_spec.rb
174
177
  - spec/unit/loader_spec.rb
@@ -184,7 +187,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
184
187
  requirements:
185
188
  - - ">="
186
189
  - !ruby/object:Gem::Version
187
- version: '0'
190
+ version: 2.1.0
188
191
  required_rubygems_version: !ruby/object:Gem::Requirement
189
192
  requirements:
190
193
  - - ">="
@@ -211,6 +214,8 @@ test_files:
211
214
  - spec/fixtures/lazytest/lib/test/models.rb
212
215
  - spec/fixtures/lazytest/lib/test/models/book.rb
213
216
  - spec/fixtures/lazytest/lib/test/models/user.rb
217
+ - spec/fixtures/namespaced_components/namespaced/bar.rb
218
+ - spec/fixtures/namespaced_components/namespaced/foo.rb
214
219
  - spec/fixtures/other/config/boot/bar.rb
215
220
  - spec/fixtures/other/lib/test/dep.rb
216
221
  - spec/fixtures/other/lib/test/foo.rb
@@ -228,6 +233,7 @@ test_files:
228
233
  - spec/spec_helper.rb
229
234
  - spec/unit/container/auto_register_spec.rb
230
235
  - spec/unit/container/import_spec.rb
236
+ - spec/unit/container/injector_spec.rb
231
237
  - spec/unit/container_spec.rb
232
238
  - spec/unit/injector_spec.rb
233
239
  - spec/unit/loader_spec.rb