dry-auto_inject 0.7.0 → 0.8.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -44,11 +44,11 @@ module Dry
44
44
  end
45
45
 
46
46
  def define_new
47
- raise NotImplementedError, "must be implemented by a subclass"
47
+ raise NotImplementedError, 'must be implemented by a subclass'
48
48
  end
49
49
 
50
50
  def define_initialize(klass)
51
- raise NotImplementedError, "must be implemented by a subclass"
51
+ raise NotImplementedError, 'must be implemented by a subclass'
52
52
  end
53
53
  end
54
54
  end
@@ -14,19 +14,20 @@ module Dry
14
14
  class_mod.class_exec(container, dependency_map) do |container, dependency_map|
15
15
  map = dependency_map.to_h
16
16
 
17
- define_method :new do |*args, **kwargs|
17
+ define_method :new do |*args, **kwargs, &block|
18
18
  map.each do |name, identifier|
19
19
  kwargs[name] = container[identifier] unless kwargs.key?(name)
20
20
  end
21
21
 
22
- super(*args, **kwargs)
22
+ super(*args, **kwargs, &block)
23
23
  end
24
24
  end
25
25
  end
26
26
 
27
27
  def define_initialize(klass)
28
28
  super_parameters = MethodParameters.of(klass, :initialize).each do |ps|
29
- # Look upwards past `def foo(*)` methods until we get an explicit list of parameters
29
+ # Look upwards past `def foo(*)` and `def foo(...)` methods
30
+ # until we get an explicit list of parameters
30
31
  break ps unless ps.pass_through?
31
32
  end
32
33
 
@@ -44,15 +45,15 @@ module Dry
44
45
  slice_kwargs = method(:slice_kwargs)
45
46
 
46
47
  instance_mod.class_exec do
47
- define_method :initialize do |**kwargs|
48
+ define_method :initialize do |**kwargs, &block|
48
49
  assign_dependencies.(kwargs, self)
49
50
 
50
51
  super_kwargs = slice_kwargs.(kwargs, super_parameters)
51
52
 
52
53
  if super_kwargs.any?
53
- super(**super_kwargs)
54
+ super(**super_kwargs, &block)
54
55
  else
55
- super()
56
+ super(&block)
56
57
  end
57
58
  end
58
59
  end
@@ -63,18 +64,18 @@ module Dry
63
64
  slice_kwargs = method(:slice_kwargs)
64
65
 
65
66
  instance_mod.class_exec do
66
- define_method :initialize do |*args, **kwargs|
67
+ define_method :initialize do |*args, **kwargs, &block|
67
68
  assign_dependencies.(kwargs, self)
68
69
 
69
70
  if super_parameters.splat?
70
- super(*args, **kwargs)
71
+ super(*args, **kwargs, &block)
71
72
  else
72
73
  super_kwargs = slice_kwargs.(kwargs, super_parameters)
73
74
 
74
75
  if super_kwargs.any?
75
- super(*args, **super_kwargs)
76
+ super(*args, **super_kwargs, &block)
76
77
  else
77
- super(*args)
78
+ super(*args, &block)
78
79
  end
79
80
  end
80
81
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Dry
4
4
  module AutoInject
5
- VERSION = '0.7.0'
5
+ VERSION = '0.8.0'
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dry-auto_inject
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.0
4
+ version: 0.8.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Piotr Solnica
8
8
  autorequire:
9
- bindir: exe
9
+ bindir: bin
10
10
  cert_chain: []
11
- date: 2019-12-28 00:00:00.000000000 Z
11
+ date: 2021-06-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: dry-container
@@ -56,47 +56,26 @@ dependencies:
56
56
  name: rspec
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - "~>"
59
+ - - ">="
60
60
  - !ruby/object:Gem::Version
61
- version: '3.8'
61
+ version: '0'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - "~>"
66
+ - - ">="
67
67
  - !ruby/object:Gem::Version
68
- version: '3.8'
69
- description:
68
+ version: '0'
69
+ description: Container-agnostic automatic constructor injection
70
70
  email:
71
71
  - piotr.solnica@gmail.com
72
72
  executables: []
73
73
  extensions: []
74
74
  extra_rdoc_files: []
75
75
  files:
76
- - ".codeclimate.yml"
77
- - ".github/ISSUE_TEMPLATE/----please-don-t-ask-for-support-via-issues.md"
78
- - ".github/ISSUE_TEMPLATE/---bug-report.md"
79
- - ".github/ISSUE_TEMPLATE/---feature-request.md"
80
- - ".github/workflows/ci.yml"
81
- - ".github/workflows/docsite.yml"
82
- - ".github/workflows/sync_configs.yml"
83
- - ".gitignore"
84
- - ".rspec"
85
- - ".rubocop.yml"
86
- - ".rubocop_todo.yml"
87
76
  - CHANGELOG.md
88
- - CODE_OF_CONDUCT.md
89
- - CONTRIBUTING.md
90
- - Gemfile
91
77
  - LICENSE
92
78
  - README.md
93
- - Rakefile
94
- - bin/console
95
- - bin/setup
96
- - docsite/source/basic-usage.html.md
97
- - docsite/source/how-does-it-work.html.md
98
- - docsite/source/index.html.md
99
- - docsite/source/injection-strategies.html.md
100
79
  - dry-auto_inject.gemspec
101
80
  - lib/dry-auto_inject.rb
102
81
  - lib/dry/auto_inject.rb
@@ -110,11 +89,14 @@ files:
110
89
  - lib/dry/auto_inject/strategies/hash.rb
111
90
  - lib/dry/auto_inject/strategies/kwargs.rb
112
91
  - lib/dry/auto_inject/version.rb
113
- - rakelib/rubocop.rake
114
- homepage: https://github.com/dry-rb/dry-auto_inject
92
+ homepage: https://dry-rb.org/gems/dry-auto_inject
115
93
  licenses:
116
94
  - MIT
117
- metadata: {}
95
+ metadata:
96
+ allowed_push_host: https://rubygems.org
97
+ changelog_uri: https://github.com/dry-rb/dry-auto_inject/blob/master/CHANGELOG.md
98
+ source_code_uri: https://github.com/dry-rb/dry-auto_inject
99
+ bug_tracker_uri: https://github.com/dry-rb/dry-auto_inject/issues
118
100
  post_install_message:
119
101
  rdoc_options: []
120
102
  require_paths:
@@ -123,14 +105,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
123
105
  requirements:
124
106
  - - ">="
125
107
  - !ruby/object:Gem::Version
126
- version: 2.4.0
108
+ version: 2.6.0
127
109
  required_rubygems_version: !ruby/object:Gem::Requirement
128
110
  requirements:
129
111
  - - ">="
130
112
  - !ruby/object:Gem::Version
131
113
  version: '0'
132
114
  requirements: []
133
- rubygems_version: 3.1.2
115
+ rubygems_version: 3.1.6
134
116
  signing_key:
135
117
  specification_version: 4
136
118
  summary: Container-agnostic automatic constructor injection
data/.codeclimate.yml DELETED
@@ -1,12 +0,0 @@
1
- # this file is managed by dry-rb/devtools project
2
-
3
- version: "2"
4
-
5
- exclude_patterns:
6
- - "benchmarks/"
7
- - "examples/"
8
- - "spec/"
9
-
10
- plugins:
11
- rubocop:
12
- enabled: true
@@ -1,10 +0,0 @@
1
- ---
2
- name: "⚠️ Please don't ask for support via issues"
3
- about: See CONTRIBUTING.md for more information
4
- title: ''
5
- labels: ''
6
- assignees: ''
7
-
8
- ---
9
-
10
-
@@ -1,30 +0,0 @@
1
- ---
2
- name: "\U0001F41B Bug report"
3
- about: See CONTRIBUTING.md for more information
4
- title: ''
5
- labels: bug
6
- assignees: ''
7
-
8
- ---
9
-
10
- **Before you submit this: WE ONLY ACCEPT BUG REPORTS AND FEATURE REQUESTS**
11
-
12
- For more information see `CONTRIBUTING.md`.
13
-
14
- **Describe the bug**
15
-
16
- A clear and concise description of what the bug is.
17
-
18
- **To Reproduce**
19
-
20
- Provide detailed steps to reproduce, an executable script would be best.
21
-
22
- **Expected behavior**
23
-
24
- A clear and concise description of what you expected to happen.
25
-
26
- **Your environment**
27
-
28
- - Affects my production application: **YES/NO**
29
- - Ruby version: ...
30
- - OS: ...
@@ -1,18 +0,0 @@
1
- ---
2
- name: "\U0001F6E0 Feature request"
3
- about: See CONTRIBUTING.md for more information
4
- title: ''
5
- labels: feature
6
- assignees: ''
7
-
8
- ---
9
-
10
- Summary of what the feature is supposed to do.
11
-
12
- ## Examples
13
-
14
- Code examples showing how the feature could be used.
15
-
16
- ## Resources
17
-
18
- Additional information, like a link to the discussion forum thread where the feature was discussed etc.
@@ -1,76 +0,0 @@
1
- # this file is managed by dry-rb/devtools project
2
-
3
- name: ci
4
-
5
- on:
6
- push:
7
- paths:
8
- - .github/workflows/ci.yml
9
- - lib/**
10
- - spec/**
11
- - Gemfile
12
- - "*.gemspec"
13
-
14
- jobs:
15
- tests-mri:
16
- runs-on: ubuntu-latest
17
- strategy:
18
- fail-fast: false
19
- matrix:
20
- ruby: ["2.6.x", "2.5.x", "2.4.x"]
21
- include:
22
- - ruby: "2.6.x"
23
- coverage: "true"
24
- steps:
25
- - uses: actions/checkout@v1
26
- - name: Set up Ruby
27
- uses: actions/setup-ruby@v1
28
- with:
29
- ruby-version: ${{matrix.ruby}}
30
- - name: Download test reporter
31
- if: "matrix.coverage == 'true'"
32
- run: |
33
- mkdir -p tmp/
34
- curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./tmp/cc-test-reporter
35
- chmod +x ./tmp/cc-test-reporter
36
- ./tmp/cc-test-reporter before-build
37
- - name: Bundle install
38
- run: |
39
- gem install bundler
40
- bundle install --jobs 4 --retry 3 --without tools docs benchmarks
41
- - name: Run all tests
42
- env:
43
- COVERAGE: ${{matrix.coverage}}
44
- run: bundle exec rake
45
- - name: Send coverage results
46
- if: "matrix.coverage == 'true'"
47
- env:
48
- CC_TEST_REPORTER_ID: ${{secrets.CC_TEST_REPORTER_ID}}
49
- GIT_COMMIT_SHA: ${{github.sha}}
50
- GIT_BRANCH: ${{github.ref}}
51
- GIT_COMMITTED_AT: ${{github.event.head_commit.timestamp}}
52
- run: |
53
- GIT_BRANCH=`ruby -e "puts ENV['GITHUB_REF'].split('/', 3).last"` \
54
- GIT_COMMITTED_AT=`ruby -r time -e "puts Time.iso8601(ENV['GIT_COMMITTED_AT']).to_i"` \
55
- ./tmp/cc-test-reporter after-build
56
-
57
- tests-others:
58
- runs-on: ubuntu-latest
59
- strategy:
60
- fail-fast: false
61
- matrix:
62
- image: ["jruby:9.2.9", "ruby:2.7"]
63
- container:
64
- image: ${{matrix.image}}
65
- steps:
66
- - uses: actions/checkout@v1
67
- - name: Install git
68
- run: |
69
- apt-get update
70
- apt-get install -y --no-install-recommends git
71
- - name: Bundle install
72
- run: |
73
- gem install bundler
74
- bundle install --jobs 4 --retry 3 --without tools docs benchmarks
75
- - name: Run all tests
76
- run: bundle exec rake
@@ -1,34 +0,0 @@
1
- # this file is managed by dry-rb/devtools project
2
-
3
- name: docsite
4
-
5
- on:
6
- push:
7
- paths:
8
- - docsite/**
9
- - .github/workflows/docsite.yml
10
- branches:
11
- - master
12
- - release-**
13
- tags:
14
-
15
- jobs:
16
- update-docs:
17
- runs-on: ubuntu-latest
18
- steps:
19
- - uses: actions/checkout@v1
20
- - name: Set up Ruby
21
- uses: actions/setup-ruby@v1
22
- with:
23
- ruby-version: "2.6.x"
24
- - name: Install dependencies
25
- run: |
26
- gem install bundler
27
- bundle install --jobs 4 --retry 3 --without benchmarks sql
28
- - name: Symlink ossy
29
- run: mkdir -p bin && ln -sf "$(bundle show ossy)/bin/ossy" bin/ossy
30
- - name: Trigger dry-rb.org deploy
31
- env:
32
- GITHUB_LOGIN: dry-bot
33
- GITHUB_TOKEN: ${{ secrets.GH_PAT }}
34
- run: bin/ossy github workflow dry-rb/dry-rb.org ci
@@ -1,34 +0,0 @@
1
- # this file is managed by dry-rb/devtools project
2
-
3
- name: sync_configs
4
-
5
- on:
6
- repository_dispatch:
7
-
8
- jobs:
9
- sync-configs:
10
- runs-on: ubuntu-latest
11
- if: github.event.action == 'sync_configs'
12
- steps:
13
- - uses: actions/checkout@v1
14
- - name: Update configuration files from devtools
15
- env:
16
- GITHUB_LOGIN: dry-bot
17
- GITHUB_TOKEN: ${{ secrets.GH_PAT }}
18
- run: |
19
- git clone https://github.com/dry-rb/devtools.git tmp/devtools
20
-
21
- if [ -f ".github/workflows/custom_ci.yml" ]; then
22
- rsync -av --exclude '.github/workflows/ci.yml' tmp/devtools/shared/ . ;
23
- else
24
- rsync -av tmp/devtools/shared/ . ;
25
- fi
26
-
27
- git config --local user.email "dry-bot@dry-rb.org"
28
- git config --local user.name "dry-bot"
29
- git add -A
30
- git commit -m "[devtools] config sync" || echo "nothing changed"
31
- - name: Push changes
32
- uses: ad-m/github-push-action@master
33
- with:
34
- github_token: ${{ secrets.GH_PAT }}
data/.gitignore DELETED
@@ -1,10 +0,0 @@
1
- /.bundle/
2
- /.yardoc
3
- /Gemfile.lock
4
- /_yardoc/
5
- /vendor/
6
- /coverage/
7
- /doc/
8
- /pkg/
9
- /spec/reports/
10
- /tmp/
data/.rspec DELETED
@@ -1,4 +0,0 @@
1
- --color
2
- --require spec_helper
3
- --order random
4
- --warnings
data/.rubocop.yml DELETED
@@ -1,95 +0,0 @@
1
- # this file is managed by dry-rb/devtools project
2
-
3
- AllCops:
4
- TargetRubyVersion: 2.4
5
-
6
- Style/EachWithObject:
7
- Enabled: false
8
-
9
- Style/StringLiterals:
10
- Enabled: true
11
- EnforcedStyle: single_quotes
12
-
13
- Style/Alias:
14
- Enabled: false
15
-
16
- Style/LambdaCall:
17
- Enabled: false
18
-
19
- Style/StabbyLambdaParentheses:
20
- Enabled: false
21
-
22
- Style/FormatString:
23
- Enabled: false
24
-
25
- Style/Documentation:
26
- Enabled: false
27
-
28
- Layout/SpaceInLambdaLiteral:
29
- Enabled: false
30
-
31
- Layout/MultilineMethodCallIndentation:
32
- Enabled: true
33
- EnforcedStyle: indented
34
-
35
- Metrics/LineLength:
36
- Max: 100
37
-
38
- Metrics/MethodLength:
39
- Max: 22
40
-
41
- Metrics/ClassLength:
42
- Max: 150
43
-
44
- Metrics/AbcSize:
45
- Max: 20
46
-
47
- Metrics/BlockLength:
48
- Enabled: false
49
-
50
- Metrics/CyclomaticComplexity:
51
- Enabled: true
52
- Max: 10
53
-
54
- Lint/BooleanSymbol:
55
- Enabled: false
56
-
57
- Style/AccessModifierDeclarations:
58
- Enabled: false
59
-
60
- Style/BlockDelimiters:
61
- Enabled: false
62
-
63
- Layout/IndentFirstArrayElement:
64
- EnforcedStyle: consistent
65
-
66
- Style/ClassAndModuleChildren:
67
- Exclude:
68
- - "spec/**/*_spec.rb"
69
-
70
- Lint/HandleExceptions:
71
- Exclude:
72
- - "spec/spec_helper.rb"
73
-
74
- Naming/FileName:
75
- Exclude:
76
- - "lib/dry-*.rb"
77
-
78
- Style/SymbolArray:
79
- Exclude:
80
- - "spec/**/*_spec.rb"
81
-
82
- Style/ConditionalAssignment:
83
- Enabled: false
84
-
85
- Naming/MethodName:
86
- Enabled: false
87
-
88
- Style/AsciiComments:
89
- Enabled: false
90
-
91
- Style/DateTime:
92
- Enabled: false
93
-
94
- Style/IfUnlessModifier:
95
- Enabled: false