dinja 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/Gemfile +9 -0
- data/LICENSE.md +21 -0
- data/README.md +127 -0
- data/lib/dinja.rb +27 -0
- data/lib/dinja/container.rb +64 -0
- data/lib/dinja/railtie.rb +14 -0
- data/lib/dinja/version.rb +16 -0
- metadata +248 -0
checksums.yaml
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
---
|
|
2
|
+
SHA256:
|
|
3
|
+
metadata.gz: 1122813235a4bb4cf99eb67e396cd70e0d58d995228d5d98095159b2bffc1e6b
|
|
4
|
+
data.tar.gz: f0a6c651e57ea285eb6ccd842d1e0445861ad02f5be3fb4a4e29a539446427c8
|
|
5
|
+
SHA512:
|
|
6
|
+
metadata.gz: 11a9f8ea23f8ea1b9adf65841eede3baac1073fad9e092ebbccf13925afbbdc34e7b99061d25d23a7f440c69751c843e4b7e056e3d16f18463cad9e55edf6f77
|
|
7
|
+
data.tar.gz: 5668ecbbee6758bc7fe4ee9c139fd69ef28d98a8eb4cf99cb44b54668c8272fbae93ad0b27022c50aaa013d4255f4af8fb45cb1f9b22ad97868572ded5e43340
|
data/Gemfile
ADDED
data/LICENSE.md
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
The MIT License (MIT)
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2021 Florian Dejonckheere
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in
|
|
13
|
+
all copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
21
|
+
THE SOFTWARE.
|
data/README.md
ADDED
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
# Dinja
|
|
2
|
+
|
|
3
|
+

|
|
4
|
+

|
|
5
|
+
|
|
6
|
+
Dinja, Dependency Injection Ninja
|
|
7
|
+
|
|
8
|
+
## Installation
|
|
9
|
+
|
|
10
|
+
Add this line to your application's Gemfile:
|
|
11
|
+
|
|
12
|
+
```ruby
|
|
13
|
+
gem "dinja"
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
And then execute:
|
|
17
|
+
|
|
18
|
+
$ bundle install
|
|
19
|
+
|
|
20
|
+
Or install it yourself as:
|
|
21
|
+
|
|
22
|
+
$ gem install dinja
|
|
23
|
+
|
|
24
|
+
## Usage
|
|
25
|
+
|
|
26
|
+
### Standalone
|
|
27
|
+
|
|
28
|
+
```ruby
|
|
29
|
+
# Instantiate a dependency injection container
|
|
30
|
+
container = Dinja::Container.new
|
|
31
|
+
|
|
32
|
+
# Register a dependency
|
|
33
|
+
container.register("my_dependency") { |name| OpenStruct.new(name: name) }
|
|
34
|
+
|
|
35
|
+
# Resolve a dependency
|
|
36
|
+
my_dependency = container.resolve("my_dependency", "foobar")
|
|
37
|
+
|
|
38
|
+
puts my_dependency.name
|
|
39
|
+
# => "foobar"
|
|
40
|
+
|
|
41
|
+
# container.resolve will raise when trying to resolve unregistered dependencies
|
|
42
|
+
# Use container.resolve! to resolve unregistered dependencies without raising (dangerous)
|
|
43
|
+
container.resolve("another_dependency")
|
|
44
|
+
# => DependencyNotRegistered
|
|
45
|
+
|
|
46
|
+
# container.register will raise when trying to overwrite registered dependencies
|
|
47
|
+
# Use container.register! to overwrite dependencies (dangerous)
|
|
48
|
+
container.register("my_dependency") { |name| OpenStruct.new(name: name) }
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
### Rails
|
|
52
|
+
|
|
53
|
+
In a Rails application, add the following line to your `config/application.rb`:
|
|
54
|
+
|
|
55
|
+
```ruby
|
|
56
|
+
require "dinja/railtie"
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
Create `config/dependencies.rb` and register some dependencies:
|
|
60
|
+
|
|
61
|
+
```ruby
|
|
62
|
+
register("my_dependency") do |name|
|
|
63
|
+
OpenStruct.new(name: name)
|
|
64
|
+
end
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
A dependency injection container is now available throughout your application on `Rails.application.config.container`:
|
|
68
|
+
|
|
69
|
+
```ruby
|
|
70
|
+
my_dependency = Rails.application.config.container.resolve("my_dependency", "foobar")
|
|
71
|
+
|
|
72
|
+
my_dependency.name
|
|
73
|
+
# => "foobar"
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
### Gem
|
|
77
|
+
|
|
78
|
+
In a gem, add the following lines to your `lib/my_gem.rb`:
|
|
79
|
+
|
|
80
|
+
```ruby
|
|
81
|
+
require "dinja"
|
|
82
|
+
|
|
83
|
+
module MyGem
|
|
84
|
+
def container
|
|
85
|
+
@container ||= Dinja::Container.new
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
def setup
|
|
89
|
+
# ...other stuff here
|
|
90
|
+
|
|
91
|
+
# Register dependencies
|
|
92
|
+
container.instance_eval(File.read("config/dependencies.rb"))
|
|
93
|
+
end
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
MyGem.setup
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
Create `config/dependencies.rb` and register some dependencies:
|
|
100
|
+
|
|
101
|
+
```ruby
|
|
102
|
+
register("my_dependency") do |name|
|
|
103
|
+
OpenStruct.new(name: name)
|
|
104
|
+
end
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
A dependency injection container is now available throughout your application on `MyGem.container`:
|
|
108
|
+
|
|
109
|
+
```ruby
|
|
110
|
+
my_dependency = MyGem.container.resolve("my_dependency", "foobar")
|
|
111
|
+
|
|
112
|
+
my_dependency.name
|
|
113
|
+
# => "foobar"
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
## Development
|
|
117
|
+
|
|
118
|
+
To release a new version, update the version number in `lib/dinja/version.rb`, update the changelog, commit the files and create a git tag starting with `v`, and push it to the repository.
|
|
119
|
+
Github Actions will automatically run the test suite, build the `.gem` file and push it to [rubygems.org](https://rubygems.org).
|
|
120
|
+
|
|
121
|
+
## Contributing
|
|
122
|
+
|
|
123
|
+
Bug reports and pull requests are welcome on GitHub at [https://github.com/floriandejonckheere/dinja](https://github.com/floriandejonckheere/dinja).
|
|
124
|
+
|
|
125
|
+
## License
|
|
126
|
+
|
|
127
|
+
The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
|
data/lib/dinja.rb
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require "zeitwerk"
|
|
4
|
+
|
|
5
|
+
# Simple dependency injection
|
|
6
|
+
module Dinja
|
|
7
|
+
class << self
|
|
8
|
+
# Code loader instance
|
|
9
|
+
attr_reader :loader
|
|
10
|
+
|
|
11
|
+
def root
|
|
12
|
+
@root ||= Pathname.new(File.expand_path(File.join("..", ".."), __FILE__))
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def setup
|
|
16
|
+
@loader = Zeitwerk::Loader.for_gem
|
|
17
|
+
|
|
18
|
+
# Do not eager load Railtie
|
|
19
|
+
loader.do_not_eager_load(root.join("lib/dinja/railtie.rb"))
|
|
20
|
+
|
|
21
|
+
loader.setup
|
|
22
|
+
loader.eager_load
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
Dinja.setup
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Dinja
|
|
4
|
+
# Dependency injection container
|
|
5
|
+
class Container
|
|
6
|
+
attr_reader :dependencies
|
|
7
|
+
|
|
8
|
+
def initialize
|
|
9
|
+
@dependencies = {}
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
# Register a dependency
|
|
13
|
+
#
|
|
14
|
+
# @param [String] key The unique key under which the dependency will be registered
|
|
15
|
+
# @param [Proc] &block The proc to be called when resolving the dependency
|
|
16
|
+
#
|
|
17
|
+
# @raise [DependencyAlreadyRegistered] If the dependency was already registered before
|
|
18
|
+
#
|
|
19
|
+
def register(key, &block)
|
|
20
|
+
raise DependencyAlreadyRegistered, "Dependency already registered: #{key}" if dependencies.key?(key)
|
|
21
|
+
|
|
22
|
+
register!(key, &block)
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
# Register or overwrite an existing dependency
|
|
26
|
+
#
|
|
27
|
+
# @param [String] key The unique key under which the dependency will be registered
|
|
28
|
+
# @param [Proc] &block The proc to be called when resolving the dependency
|
|
29
|
+
#
|
|
30
|
+
def register!(key, &block)
|
|
31
|
+
dependencies[key] = block
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
# Resolve a dependency
|
|
35
|
+
#
|
|
36
|
+
# @param [String] key The unique key under which the dependency was registered
|
|
37
|
+
# @param [Object] *args The arguments to pass when resolving the dependency
|
|
38
|
+
# @param [Proc] &block The block to pass when resolving the dependency
|
|
39
|
+
#
|
|
40
|
+
# @raise [DependencyNotRegistered] If the dependency was not registered
|
|
41
|
+
#
|
|
42
|
+
def resolve(key, *args, &block)
|
|
43
|
+
return dependencies[key].call(*args, &block) if dependencies.key?(key)
|
|
44
|
+
|
|
45
|
+
raise DependencyNotRegistered, "Dependency not registered: #{key}"
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
# Resolve a dependency
|
|
49
|
+
#
|
|
50
|
+
# @param [String] key The unique key under which the dependency was registered
|
|
51
|
+
# @param [Object] *args The arguments to pass when resolving the dependency
|
|
52
|
+
# @param [Proc] &block The block to pass when resolving the dependency
|
|
53
|
+
#
|
|
54
|
+
def resolve!(key, *args, &block)
|
|
55
|
+
dependencies[key]&.call(*args, &block)
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
# Raised when trying to overwrite a dependency that was already registered
|
|
59
|
+
class DependencyAlreadyRegistered < StandardError; end
|
|
60
|
+
|
|
61
|
+
# Raised when trying to resolve a dependency that was not registered
|
|
62
|
+
class DependencyNotRegistered < StandardError; end
|
|
63
|
+
end
|
|
64
|
+
end
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require "rails"
|
|
4
|
+
|
|
5
|
+
require_relative "../dinja"
|
|
6
|
+
|
|
7
|
+
module Dinja
|
|
8
|
+
# Dinja Railtie
|
|
9
|
+
class Railtie < Rails::Railtie
|
|
10
|
+
config.container = Dinja::Container.new
|
|
11
|
+
|
|
12
|
+
config.container.instance_eval(File.read(File.join("config/dependencies.rb")))
|
|
13
|
+
end
|
|
14
|
+
end
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Dinja
|
|
4
|
+
module Version
|
|
5
|
+
MAJOR = 1
|
|
6
|
+
MINOR = 0
|
|
7
|
+
PATCH = 0
|
|
8
|
+
PRE = nil
|
|
9
|
+
|
|
10
|
+
VERSION = [MAJOR, MINOR, PATCH].compact.join(".")
|
|
11
|
+
|
|
12
|
+
STRING = [VERSION, PRE].compact.join("-")
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
VERSION = Version::STRING
|
|
16
|
+
end
|
metadata
ADDED
|
@@ -0,0 +1,248 @@
|
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
|
+
name: dinja
|
|
3
|
+
version: !ruby/object:Gem::Version
|
|
4
|
+
version: 1.0.0
|
|
5
|
+
platform: ruby
|
|
6
|
+
authors:
|
|
7
|
+
- Florian Dejonckheere
|
|
8
|
+
autorequire:
|
|
9
|
+
bindir: bin
|
|
10
|
+
cert_chain: []
|
|
11
|
+
date: 2021-02-28 00:00:00.000000000 Z
|
|
12
|
+
dependencies:
|
|
13
|
+
- !ruby/object:Gem::Dependency
|
|
14
|
+
name: zeitwerk
|
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
|
16
|
+
requirements:
|
|
17
|
+
- - ">="
|
|
18
|
+
- !ruby/object:Gem::Version
|
|
19
|
+
version: '0'
|
|
20
|
+
type: :runtime
|
|
21
|
+
prerelease: false
|
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
23
|
+
requirements:
|
|
24
|
+
- - ">="
|
|
25
|
+
- !ruby/object:Gem::Version
|
|
26
|
+
version: '0'
|
|
27
|
+
- !ruby/object:Gem::Dependency
|
|
28
|
+
name: byebug
|
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
|
30
|
+
requirements:
|
|
31
|
+
- - ">="
|
|
32
|
+
- !ruby/object:Gem::Version
|
|
33
|
+
version: '0'
|
|
34
|
+
type: :development
|
|
35
|
+
prerelease: false
|
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
37
|
+
requirements:
|
|
38
|
+
- - ">="
|
|
39
|
+
- !ruby/object:Gem::Version
|
|
40
|
+
version: '0'
|
|
41
|
+
- !ruby/object:Gem::Dependency
|
|
42
|
+
name: debase
|
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
|
44
|
+
requirements:
|
|
45
|
+
- - ">="
|
|
46
|
+
- !ruby/object:Gem::Version
|
|
47
|
+
version: '0'
|
|
48
|
+
type: :development
|
|
49
|
+
prerelease: false
|
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
51
|
+
requirements:
|
|
52
|
+
- - ">="
|
|
53
|
+
- !ruby/object:Gem::Version
|
|
54
|
+
version: '0'
|
|
55
|
+
- !ruby/object:Gem::Dependency
|
|
56
|
+
name: factory_bot
|
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
|
58
|
+
requirements:
|
|
59
|
+
- - ">="
|
|
60
|
+
- !ruby/object:Gem::Version
|
|
61
|
+
version: '0'
|
|
62
|
+
type: :development
|
|
63
|
+
prerelease: false
|
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
65
|
+
requirements:
|
|
66
|
+
- - ">="
|
|
67
|
+
- !ruby/object:Gem::Version
|
|
68
|
+
version: '0'
|
|
69
|
+
- !ruby/object:Gem::Dependency
|
|
70
|
+
name: fasterer
|
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
|
72
|
+
requirements:
|
|
73
|
+
- - ">="
|
|
74
|
+
- !ruby/object:Gem::Version
|
|
75
|
+
version: '0'
|
|
76
|
+
type: :development
|
|
77
|
+
prerelease: false
|
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
79
|
+
requirements:
|
|
80
|
+
- - ">="
|
|
81
|
+
- !ruby/object:Gem::Version
|
|
82
|
+
version: '0'
|
|
83
|
+
- !ruby/object:Gem::Dependency
|
|
84
|
+
name: flay
|
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
|
86
|
+
requirements:
|
|
87
|
+
- - ">="
|
|
88
|
+
- !ruby/object:Gem::Version
|
|
89
|
+
version: '0'
|
|
90
|
+
type: :development
|
|
91
|
+
prerelease: false
|
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
93
|
+
requirements:
|
|
94
|
+
- - ">="
|
|
95
|
+
- !ruby/object:Gem::Version
|
|
96
|
+
version: '0'
|
|
97
|
+
- !ruby/object:Gem::Dependency
|
|
98
|
+
name: overcommit
|
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
|
100
|
+
requirements:
|
|
101
|
+
- - ">="
|
|
102
|
+
- !ruby/object:Gem::Version
|
|
103
|
+
version: '0'
|
|
104
|
+
type: :development
|
|
105
|
+
prerelease: false
|
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
107
|
+
requirements:
|
|
108
|
+
- - ">="
|
|
109
|
+
- !ruby/object:Gem::Version
|
|
110
|
+
version: '0'
|
|
111
|
+
- !ruby/object:Gem::Dependency
|
|
112
|
+
name: pronto
|
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
|
114
|
+
requirements:
|
|
115
|
+
- - ">="
|
|
116
|
+
- !ruby/object:Gem::Version
|
|
117
|
+
version: '0'
|
|
118
|
+
type: :development
|
|
119
|
+
prerelease: false
|
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
121
|
+
requirements:
|
|
122
|
+
- - ">="
|
|
123
|
+
- !ruby/object:Gem::Version
|
|
124
|
+
version: '0'
|
|
125
|
+
- !ruby/object:Gem::Dependency
|
|
126
|
+
name: rake
|
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
|
128
|
+
requirements:
|
|
129
|
+
- - ">="
|
|
130
|
+
- !ruby/object:Gem::Version
|
|
131
|
+
version: '0'
|
|
132
|
+
type: :development
|
|
133
|
+
prerelease: false
|
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
135
|
+
requirements:
|
|
136
|
+
- - ">="
|
|
137
|
+
- !ruby/object:Gem::Version
|
|
138
|
+
version: '0'
|
|
139
|
+
- !ruby/object:Gem::Dependency
|
|
140
|
+
name: reek
|
|
141
|
+
requirement: !ruby/object:Gem::Requirement
|
|
142
|
+
requirements:
|
|
143
|
+
- - ">="
|
|
144
|
+
- !ruby/object:Gem::Version
|
|
145
|
+
version: '0'
|
|
146
|
+
type: :development
|
|
147
|
+
prerelease: false
|
|
148
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
149
|
+
requirements:
|
|
150
|
+
- - ">="
|
|
151
|
+
- !ruby/object:Gem::Version
|
|
152
|
+
version: '0'
|
|
153
|
+
- !ruby/object:Gem::Dependency
|
|
154
|
+
name: rspec
|
|
155
|
+
requirement: !ruby/object:Gem::Requirement
|
|
156
|
+
requirements:
|
|
157
|
+
- - ">="
|
|
158
|
+
- !ruby/object:Gem::Version
|
|
159
|
+
version: '0'
|
|
160
|
+
type: :development
|
|
161
|
+
prerelease: false
|
|
162
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
163
|
+
requirements:
|
|
164
|
+
- - ">="
|
|
165
|
+
- !ruby/object:Gem::Version
|
|
166
|
+
version: '0'
|
|
167
|
+
- !ruby/object:Gem::Dependency
|
|
168
|
+
name: rubocop
|
|
169
|
+
requirement: !ruby/object:Gem::Requirement
|
|
170
|
+
requirements:
|
|
171
|
+
- - ">="
|
|
172
|
+
- !ruby/object:Gem::Version
|
|
173
|
+
version: '0'
|
|
174
|
+
type: :development
|
|
175
|
+
prerelease: false
|
|
176
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
177
|
+
requirements:
|
|
178
|
+
- - ">="
|
|
179
|
+
- !ruby/object:Gem::Version
|
|
180
|
+
version: '0'
|
|
181
|
+
- !ruby/object:Gem::Dependency
|
|
182
|
+
name: rubocop-performance
|
|
183
|
+
requirement: !ruby/object:Gem::Requirement
|
|
184
|
+
requirements:
|
|
185
|
+
- - ">="
|
|
186
|
+
- !ruby/object:Gem::Version
|
|
187
|
+
version: '0'
|
|
188
|
+
type: :development
|
|
189
|
+
prerelease: false
|
|
190
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
191
|
+
requirements:
|
|
192
|
+
- - ">="
|
|
193
|
+
- !ruby/object:Gem::Version
|
|
194
|
+
version: '0'
|
|
195
|
+
- !ruby/object:Gem::Dependency
|
|
196
|
+
name: rubocop-rspec
|
|
197
|
+
requirement: !ruby/object:Gem::Requirement
|
|
198
|
+
requirements:
|
|
199
|
+
- - ">="
|
|
200
|
+
- !ruby/object:Gem::Version
|
|
201
|
+
version: '0'
|
|
202
|
+
type: :development
|
|
203
|
+
prerelease: false
|
|
204
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
205
|
+
requirements:
|
|
206
|
+
- - ">="
|
|
207
|
+
- !ruby/object:Gem::Version
|
|
208
|
+
version: '0'
|
|
209
|
+
description: Dinja, Dependency Injection Ninja allows you to decouple abstractions
|
|
210
|
+
from implementations
|
|
211
|
+
email:
|
|
212
|
+
- florian@floriandejonckheere.be
|
|
213
|
+
executables: []
|
|
214
|
+
extensions: []
|
|
215
|
+
extra_rdoc_files: []
|
|
216
|
+
files:
|
|
217
|
+
- Gemfile
|
|
218
|
+
- LICENSE.md
|
|
219
|
+
- README.md
|
|
220
|
+
- lib/dinja.rb
|
|
221
|
+
- lib/dinja/container.rb
|
|
222
|
+
- lib/dinja/railtie.rb
|
|
223
|
+
- lib/dinja/version.rb
|
|
224
|
+
homepage: https://github.com/floriandejonckheere/dinja
|
|
225
|
+
licenses:
|
|
226
|
+
- MIT
|
|
227
|
+
metadata:
|
|
228
|
+
source_code_uri: https://github.com/floriandejonckheere/dinja.git
|
|
229
|
+
post_install_message:
|
|
230
|
+
rdoc_options: []
|
|
231
|
+
require_paths:
|
|
232
|
+
- lib
|
|
233
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
|
234
|
+
requirements:
|
|
235
|
+
- - ">="
|
|
236
|
+
- !ruby/object:Gem::Version
|
|
237
|
+
version: '2.6'
|
|
238
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
239
|
+
requirements:
|
|
240
|
+
- - ">="
|
|
241
|
+
- !ruby/object:Gem::Version
|
|
242
|
+
version: '0'
|
|
243
|
+
requirements: []
|
|
244
|
+
rubygems_version: 3.1.2
|
|
245
|
+
signing_key:
|
|
246
|
+
specification_version: 4
|
|
247
|
+
summary: Simple Dependency Injection container
|
|
248
|
+
test_files: []
|