dry-system 0.18.1 → 1.0.1
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 +4 -4
- data/CHANGELOG.md +678 -0
- data/LICENSE +1 -1
- data/README.md +5 -4
- data/dry-system.gemspec +18 -21
- data/lib/dry/system/auto_registrar.rb +9 -64
- data/lib/dry/system/component.rb +124 -104
- data/lib/dry/system/component_dir.rb +171 -0
- data/lib/dry/system/config/component_dir.rb +228 -0
- data/lib/dry/system/config/component_dirs.rb +289 -0
- data/lib/dry/system/config/namespace.rb +75 -0
- data/lib/dry/system/config/namespaces.rb +196 -0
- data/lib/dry/system/constants.rb +2 -4
- data/lib/dry/system/container.rb +305 -345
- data/lib/dry/system/errors.rb +73 -56
- data/lib/dry/system/identifier.rb +176 -0
- data/lib/dry/system/importer.rb +89 -12
- data/lib/dry/system/indirect_component.rb +63 -0
- data/lib/dry/system/loader/autoloading.rb +24 -0
- data/lib/dry/system/loader.rb +49 -41
- data/lib/dry/system/{manual_registrar.rb → manifest_registrar.rb} +13 -14
- data/lib/dry/system/plugins/bootsnap.rb +3 -2
- data/lib/dry/system/plugins/dependency_graph/strategies.rb +38 -2
- data/lib/dry/system/plugins/dependency_graph.rb +25 -21
- data/lib/dry/system/plugins/env.rb +3 -2
- data/lib/dry/system/plugins/logging.rb +9 -8
- data/lib/dry/system/plugins/monitoring.rb +1 -2
- data/lib/dry/system/plugins/notifications.rb +1 -1
- data/lib/dry/system/plugins/plugin.rb +61 -0
- data/lib/dry/system/plugins/zeitwerk/compat_inflector.rb +22 -0
- data/lib/dry/system/plugins/zeitwerk.rb +109 -0
- data/lib/dry/system/plugins.rb +5 -73
- data/lib/dry/system/provider/source.rb +276 -0
- data/lib/dry/system/provider/source_dsl.rb +55 -0
- data/lib/dry/system/provider.rb +261 -23
- data/lib/dry/system/provider_registrar.rb +251 -0
- data/lib/dry/system/provider_source_registry.rb +56 -0
- data/lib/dry/system/provider_sources/settings/config.rb +73 -0
- data/lib/dry/system/provider_sources/settings/loader.rb +44 -0
- data/lib/dry/system/provider_sources/settings.rb +40 -0
- data/lib/dry/system/provider_sources.rb +5 -0
- data/lib/dry/system/stubs.rb +6 -2
- data/lib/dry/system/version.rb +1 -1
- data/lib/dry/system.rb +35 -13
- metadata +48 -97
- data/lib/dry/system/auto_registrar/configuration.rb +0 -43
- data/lib/dry/system/booter/component_registry.rb +0 -35
- data/lib/dry/system/booter.rb +0 -181
- data/lib/dry/system/components/bootable.rb +0 -289
- data/lib/dry/system/components/config.rb +0 -35
- data/lib/dry/system/components.rb +0 -8
- data/lib/dry/system/lifecycle.rb +0 -135
- data/lib/dry/system/provider_registry.rb +0 -27
- data/lib/dry/system/settings/file_loader.rb +0 -30
- data/lib/dry/system/settings/file_parser.rb +0 -51
- data/lib/dry/system/settings.rb +0 -67
- data/lib/dry/system/system_components/settings.rb +0 -11
metadata
CHANGED
@@ -1,22 +1,25 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dry-system
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 1.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Piotr Solnica
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2022-11-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
name:
|
14
|
+
name: dry-auto_inject
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '1.0'
|
20
|
+
- - "<"
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: '2'
|
20
23
|
type: :runtime
|
21
24
|
prerelease: false
|
22
25
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -24,128 +27,69 @@ dependencies:
|
|
24
27
|
- - "~>"
|
25
28
|
- !ruby/object:Gem::Version
|
26
29
|
version: '1.0'
|
27
|
-
-
|
28
|
-
name: dry-auto_inject
|
29
|
-
requirement: !ruby/object:Gem::Requirement
|
30
|
-
requirements:
|
31
|
-
- - ">="
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
version: 0.4.0
|
34
|
-
type: :runtime
|
35
|
-
prerelease: false
|
36
|
-
version_requirements: !ruby/object:Gem::Requirement
|
37
|
-
requirements:
|
38
|
-
- - ">="
|
30
|
+
- - "<"
|
39
31
|
- !ruby/object:Gem::Version
|
40
|
-
version:
|
32
|
+
version: '2'
|
41
33
|
- !ruby/object:Gem::Dependency
|
42
34
|
name: dry-configurable
|
43
35
|
requirement: !ruby/object:Gem::Requirement
|
44
36
|
requirements:
|
45
37
|
- - "~>"
|
46
38
|
- !ruby/object:Gem::Version
|
47
|
-
version: '0
|
48
|
-
- - "
|
49
|
-
- !ruby/object:Gem::Version
|
50
|
-
version: 0.11.1
|
51
|
-
type: :runtime
|
52
|
-
prerelease: false
|
53
|
-
version_requirements: !ruby/object:Gem::Requirement
|
54
|
-
requirements:
|
55
|
-
- - "~>"
|
56
|
-
- !ruby/object:Gem::Version
|
57
|
-
version: '0.11'
|
58
|
-
- - ">="
|
59
|
-
- !ruby/object:Gem::Version
|
60
|
-
version: 0.11.1
|
61
|
-
- !ruby/object:Gem::Dependency
|
62
|
-
name: dry-container
|
63
|
-
requirement: !ruby/object:Gem::Requirement
|
64
|
-
requirements:
|
65
|
-
- - "~>"
|
66
|
-
- !ruby/object:Gem::Version
|
67
|
-
version: '0.7'
|
68
|
-
- - ">="
|
39
|
+
version: '1.0'
|
40
|
+
- - "<"
|
69
41
|
- !ruby/object:Gem::Version
|
70
|
-
version:
|
42
|
+
version: '2'
|
71
43
|
type: :runtime
|
72
44
|
prerelease: false
|
73
45
|
version_requirements: !ruby/object:Gem::Requirement
|
74
46
|
requirements:
|
75
47
|
- - "~>"
|
76
48
|
- !ruby/object:Gem::Version
|
77
|
-
version: '0
|
78
|
-
- - "
|
49
|
+
version: '1.0'
|
50
|
+
- - "<"
|
79
51
|
- !ruby/object:Gem::Version
|
80
|
-
version:
|
52
|
+
version: '2'
|
81
53
|
- !ruby/object:Gem::Dependency
|
82
54
|
name: dry-core
|
83
55
|
requirement: !ruby/object:Gem::Requirement
|
84
56
|
requirements:
|
85
57
|
- - "~>"
|
86
58
|
- !ruby/object:Gem::Version
|
87
|
-
version: '0
|
88
|
-
- - "
|
59
|
+
version: '1.0'
|
60
|
+
- - "<"
|
89
61
|
- !ruby/object:Gem::Version
|
90
|
-
version:
|
62
|
+
version: '2'
|
91
63
|
type: :runtime
|
92
64
|
prerelease: false
|
93
65
|
version_requirements: !ruby/object:Gem::Requirement
|
94
66
|
requirements:
|
95
67
|
- - "~>"
|
96
68
|
- !ruby/object:Gem::Version
|
97
|
-
version: '0
|
98
|
-
- - "
|
99
|
-
- !ruby/object:Gem::Version
|
100
|
-
version: 0.3.1
|
101
|
-
- !ruby/object:Gem::Dependency
|
102
|
-
name: dry-equalizer
|
103
|
-
requirement: !ruby/object:Gem::Requirement
|
104
|
-
requirements:
|
105
|
-
- - "~>"
|
106
|
-
- !ruby/object:Gem::Version
|
107
|
-
version: '0.2'
|
108
|
-
type: :runtime
|
109
|
-
prerelease: false
|
110
|
-
version_requirements: !ruby/object:Gem::Requirement
|
111
|
-
requirements:
|
112
|
-
- - "~>"
|
69
|
+
version: '1.0'
|
70
|
+
- - "<"
|
113
71
|
- !ruby/object:Gem::Version
|
114
|
-
version: '
|
72
|
+
version: '2'
|
115
73
|
- !ruby/object:Gem::Dependency
|
116
74
|
name: dry-inflector
|
117
75
|
requirement: !ruby/object:Gem::Requirement
|
118
76
|
requirements:
|
119
77
|
- - "~>"
|
120
78
|
- !ruby/object:Gem::Version
|
121
|
-
version: '0
|
122
|
-
- - "
|
79
|
+
version: '1.0'
|
80
|
+
- - "<"
|
123
81
|
- !ruby/object:Gem::Version
|
124
|
-
version:
|
82
|
+
version: '2'
|
125
83
|
type: :runtime
|
126
84
|
prerelease: false
|
127
85
|
version_requirements: !ruby/object:Gem::Requirement
|
128
|
-
requirements:
|
129
|
-
- - "~>"
|
130
|
-
- !ruby/object:Gem::Version
|
131
|
-
version: '0.1'
|
132
|
-
- - ">="
|
133
|
-
- !ruby/object:Gem::Version
|
134
|
-
version: 0.1.2
|
135
|
-
- !ruby/object:Gem::Dependency
|
136
|
-
name: dry-struct
|
137
|
-
requirement: !ruby/object:Gem::Requirement
|
138
86
|
requirements:
|
139
87
|
- - "~>"
|
140
88
|
- !ruby/object:Gem::Version
|
141
89
|
version: '1.0'
|
142
|
-
|
143
|
-
prerelease: false
|
144
|
-
version_requirements: !ruby/object:Gem::Requirement
|
145
|
-
requirements:
|
146
|
-
- - "~>"
|
90
|
+
- - "<"
|
147
91
|
- !ruby/object:Gem::Version
|
148
|
-
version: '
|
92
|
+
version: '2'
|
149
93
|
- !ruby/object:Gem::Dependency
|
150
94
|
name: bundler
|
151
95
|
requirement: !ruby/object:Gem::Requirement
|
@@ -202,21 +146,22 @@ files:
|
|
202
146
|
- lib/dry-system.rb
|
203
147
|
- lib/dry/system.rb
|
204
148
|
- lib/dry/system/auto_registrar.rb
|
205
|
-
- lib/dry/system/auto_registrar/configuration.rb
|
206
|
-
- lib/dry/system/booter.rb
|
207
|
-
- lib/dry/system/booter/component_registry.rb
|
208
149
|
- lib/dry/system/component.rb
|
209
|
-
- lib/dry/system/
|
210
|
-
- lib/dry/system/
|
211
|
-
- lib/dry/system/
|
150
|
+
- lib/dry/system/component_dir.rb
|
151
|
+
- lib/dry/system/config/component_dir.rb
|
152
|
+
- lib/dry/system/config/component_dirs.rb
|
153
|
+
- lib/dry/system/config/namespace.rb
|
154
|
+
- lib/dry/system/config/namespaces.rb
|
212
155
|
- lib/dry/system/constants.rb
|
213
156
|
- lib/dry/system/container.rb
|
214
157
|
- lib/dry/system/errors.rb
|
158
|
+
- lib/dry/system/identifier.rb
|
215
159
|
- lib/dry/system/importer.rb
|
216
|
-
- lib/dry/system/
|
160
|
+
- lib/dry/system/indirect_component.rb
|
217
161
|
- lib/dry/system/loader.rb
|
162
|
+
- lib/dry/system/loader/autoloading.rb
|
218
163
|
- lib/dry/system/magic_comments_parser.rb
|
219
|
-
- lib/dry/system/
|
164
|
+
- lib/dry/system/manifest_registrar.rb
|
220
165
|
- lib/dry/system/plugins.rb
|
221
166
|
- lib/dry/system/plugins/bootsnap.rb
|
222
167
|
- lib/dry/system/plugins/dependency_graph.rb
|
@@ -226,20 +171,26 @@ files:
|
|
226
171
|
- lib/dry/system/plugins/monitoring.rb
|
227
172
|
- lib/dry/system/plugins/monitoring/proxy.rb
|
228
173
|
- lib/dry/system/plugins/notifications.rb
|
174
|
+
- lib/dry/system/plugins/plugin.rb
|
175
|
+
- lib/dry/system/plugins/zeitwerk.rb
|
176
|
+
- lib/dry/system/plugins/zeitwerk/compat_inflector.rb
|
229
177
|
- lib/dry/system/provider.rb
|
230
|
-
- lib/dry/system/
|
231
|
-
- lib/dry/system/
|
232
|
-
- lib/dry/system/
|
233
|
-
- lib/dry/system/
|
178
|
+
- lib/dry/system/provider/source.rb
|
179
|
+
- lib/dry/system/provider/source_dsl.rb
|
180
|
+
- lib/dry/system/provider_registrar.rb
|
181
|
+
- lib/dry/system/provider_source_registry.rb
|
182
|
+
- lib/dry/system/provider_sources.rb
|
183
|
+
- lib/dry/system/provider_sources/settings.rb
|
184
|
+
- lib/dry/system/provider_sources/settings/config.rb
|
185
|
+
- lib/dry/system/provider_sources/settings/loader.rb
|
234
186
|
- lib/dry/system/stubs.rb
|
235
|
-
- lib/dry/system/system_components/settings.rb
|
236
187
|
- lib/dry/system/version.rb
|
237
188
|
homepage: https://dry-rb.org/gems/dry-system
|
238
189
|
licenses:
|
239
190
|
- MIT
|
240
191
|
metadata:
|
241
192
|
allowed_push_host: https://rubygems.org
|
242
|
-
changelog_uri: https://github.com/dry-rb/dry-system/blob/
|
193
|
+
changelog_uri: https://github.com/dry-rb/dry-system/blob/main/CHANGELOG.md
|
243
194
|
source_code_uri: https://github.com/dry-rb/dry-system
|
244
195
|
bug_tracker_uri: https://github.com/dry-rb/dry-system/issues
|
245
196
|
post_install_message:
|
@@ -250,14 +201,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
250
201
|
requirements:
|
251
202
|
- - ">="
|
252
203
|
- !ruby/object:Gem::Version
|
253
|
-
version: 2.
|
204
|
+
version: 2.7.0
|
254
205
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
255
206
|
requirements:
|
256
207
|
- - ">="
|
257
208
|
- !ruby/object:Gem::Version
|
258
209
|
version: '0'
|
259
210
|
requirements: []
|
260
|
-
rubygems_version: 3.
|
211
|
+
rubygems_version: 3.1.6
|
261
212
|
signing_key:
|
262
213
|
specification_version: 4
|
263
214
|
summary: Organize your code into reusable components
|
@@ -1,43 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Dry
|
4
|
-
module System
|
5
|
-
class AutoRegistrar
|
6
|
-
# Default auto_registrar configuration
|
7
|
-
#
|
8
|
-
# This is currently configured by default for every System::Container.
|
9
|
-
# Configuration allows to define custom initialization as well as exclusion
|
10
|
-
# logic, for each component that is being registered by Dry::System
|
11
|
-
# auto-registration.
|
12
|
-
#
|
13
|
-
# @api private
|
14
|
-
class Configuration
|
15
|
-
DEFAULT_INSTANCE = -> component { component.instance }.freeze
|
16
|
-
FALSE_PROC = -> * { false }.freeze
|
17
|
-
|
18
|
-
def self.setting(name)
|
19
|
-
define_method(name) do |&block|
|
20
|
-
ivar = "@#{name}"
|
21
|
-
if block
|
22
|
-
instance_variable_set(ivar, block)
|
23
|
-
else
|
24
|
-
instance_variable_get(ivar)
|
25
|
-
end
|
26
|
-
end
|
27
|
-
end
|
28
|
-
|
29
|
-
setting :exclude
|
30
|
-
setting :instance
|
31
|
-
|
32
|
-
attr_accessor :memoize
|
33
|
-
|
34
|
-
# @api private
|
35
|
-
def initialize
|
36
|
-
@instance = DEFAULT_INSTANCE
|
37
|
-
@exclude = FALSE_PROC
|
38
|
-
@memoize = false
|
39
|
-
end
|
40
|
-
end
|
41
|
-
end
|
42
|
-
end
|
43
|
-
end
|
@@ -1,35 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Dry
|
4
|
-
module System
|
5
|
-
class Booter
|
6
|
-
class ComponentRegistry
|
7
|
-
include Enumerable
|
8
|
-
|
9
|
-
attr_reader :components
|
10
|
-
|
11
|
-
def initialize
|
12
|
-
@components = []
|
13
|
-
end
|
14
|
-
|
15
|
-
def each(&block)
|
16
|
-
components.each(&block)
|
17
|
-
end
|
18
|
-
|
19
|
-
def register(component)
|
20
|
-
@components << component
|
21
|
-
end
|
22
|
-
|
23
|
-
def exists?(name)
|
24
|
-
components.any? { |component| component.identifier == name }
|
25
|
-
end
|
26
|
-
|
27
|
-
def [](name)
|
28
|
-
component = components.detect { |component| component.identifier == name }
|
29
|
-
|
30
|
-
component || raise(InvalidComponentIdentifierError, name)
|
31
|
-
end
|
32
|
-
end
|
33
|
-
end
|
34
|
-
end
|
35
|
-
end
|
data/lib/dry/system/booter.rb
DELETED
@@ -1,181 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require "dry/system/components/bootable"
|
4
|
-
require "dry/system/errors"
|
5
|
-
require "dry/system/constants"
|
6
|
-
require "dry/system/lifecycle"
|
7
|
-
require "dry/system/booter/component_registry"
|
8
|
-
require "pathname"
|
9
|
-
|
10
|
-
module Dry
|
11
|
-
module System
|
12
|
-
# Default booter implementation
|
13
|
-
#
|
14
|
-
# This is currently configured by default for every System::Container.
|
15
|
-
# Booter objects are responsible for loading system/boot files and expose
|
16
|
-
# an API for calling lifecycle triggers.
|
17
|
-
#
|
18
|
-
# @api private
|
19
|
-
class Booter
|
20
|
-
attr_reader :paths
|
21
|
-
|
22
|
-
attr_reader :booted
|
23
|
-
|
24
|
-
attr_reader :components
|
25
|
-
|
26
|
-
# @api private
|
27
|
-
def initialize(paths)
|
28
|
-
@paths = paths
|
29
|
-
@booted = []
|
30
|
-
@components = ComponentRegistry.new
|
31
|
-
end
|
32
|
-
|
33
|
-
# @api private
|
34
|
-
def bootable?(component)
|
35
|
-
!boot_file(component).nil?
|
36
|
-
end
|
37
|
-
|
38
|
-
# @api private
|
39
|
-
def register_component(component)
|
40
|
-
components.register(component)
|
41
|
-
self
|
42
|
-
end
|
43
|
-
|
44
|
-
# @api private
|
45
|
-
def finalize!
|
46
|
-
boot_files.each do |path|
|
47
|
-
load_component(path)
|
48
|
-
end
|
49
|
-
|
50
|
-
components.each do |component|
|
51
|
-
start(component)
|
52
|
-
end
|
53
|
-
|
54
|
-
freeze
|
55
|
-
end
|
56
|
-
|
57
|
-
# @api private
|
58
|
-
def shutdown
|
59
|
-
components.each do |component|
|
60
|
-
next unless booted.include?(component)
|
61
|
-
|
62
|
-
stop(component)
|
63
|
-
end
|
64
|
-
end
|
65
|
-
|
66
|
-
# @api private
|
67
|
-
def init(name_or_component)
|
68
|
-
with_component(name_or_component) do |component|
|
69
|
-
call(component) do
|
70
|
-
component.init.finalize
|
71
|
-
yield if block_given?
|
72
|
-
end
|
73
|
-
|
74
|
-
self
|
75
|
-
end
|
76
|
-
end
|
77
|
-
|
78
|
-
# @api private
|
79
|
-
def start(name_or_component)
|
80
|
-
with_component(name_or_component) do |component|
|
81
|
-
return self if booted.include?(component)
|
82
|
-
|
83
|
-
init(name_or_component) do
|
84
|
-
component.start
|
85
|
-
end
|
86
|
-
|
87
|
-
booted << component.finalize
|
88
|
-
|
89
|
-
self
|
90
|
-
end
|
91
|
-
end
|
92
|
-
|
93
|
-
# @api private
|
94
|
-
def stop(name_or_component)
|
95
|
-
call(name_or_component) do |component|
|
96
|
-
raise ComponentNotStartedError, name_or_component unless booted.include?(component)
|
97
|
-
|
98
|
-
component.stop
|
99
|
-
booted.delete(component)
|
100
|
-
|
101
|
-
yield if block_given?
|
102
|
-
end
|
103
|
-
end
|
104
|
-
|
105
|
-
# @api private
|
106
|
-
def call(name_or_component)
|
107
|
-
with_component(name_or_component) do |component|
|
108
|
-
raise ComponentFileMismatchError, name unless component
|
109
|
-
|
110
|
-
yield(component) if block_given?
|
111
|
-
|
112
|
-
component
|
113
|
-
end
|
114
|
-
end
|
115
|
-
|
116
|
-
# @api private
|
117
|
-
def boot_dependency(component)
|
118
|
-
boot_file = boot_file(component)
|
119
|
-
|
120
|
-
start(boot_file.basename(".*").to_s.to_sym) if boot_file
|
121
|
-
end
|
122
|
-
|
123
|
-
# @api private
|
124
|
-
def boot_files
|
125
|
-
@boot_files ||= paths.each_with_object([[], []]) { |path, (boot_files, loaded)|
|
126
|
-
files = Dir["#{path}/#{RB_GLOB}"].sort
|
127
|
-
|
128
|
-
files.each do |file|
|
129
|
-
basename = File.basename(file)
|
130
|
-
|
131
|
-
unless loaded.include?(basename)
|
132
|
-
boot_files << Pathname(file)
|
133
|
-
loaded << basename
|
134
|
-
end
|
135
|
-
end
|
136
|
-
}.first
|
137
|
-
end
|
138
|
-
|
139
|
-
private
|
140
|
-
|
141
|
-
def with_component(id_or_component)
|
142
|
-
component =
|
143
|
-
case id_or_component
|
144
|
-
when Symbol
|
145
|
-
require_boot_file(id_or_component) unless components.exists?(id_or_component)
|
146
|
-
components[id_or_component]
|
147
|
-
when Components::Bootable
|
148
|
-
id_or_component
|
149
|
-
end
|
150
|
-
|
151
|
-
raise InvalidComponentError, id_or_component unless component
|
152
|
-
|
153
|
-
yield(component)
|
154
|
-
end
|
155
|
-
|
156
|
-
def load_component(path)
|
157
|
-
identifier = Pathname(path).basename(RB_EXT).to_s.to_sym
|
158
|
-
|
159
|
-
Kernel.require path unless components.exists?(identifier)
|
160
|
-
|
161
|
-
self
|
162
|
-
end
|
163
|
-
|
164
|
-
def boot_file(name)
|
165
|
-
name = name.respond_to?(:root_key) ? name.root_key.to_s : name
|
166
|
-
|
167
|
-
find_boot_file(name)
|
168
|
-
end
|
169
|
-
|
170
|
-
def require_boot_file(identifier)
|
171
|
-
boot_file = find_boot_file(identifier)
|
172
|
-
|
173
|
-
Kernel.require boot_file if boot_file
|
174
|
-
end
|
175
|
-
|
176
|
-
def find_boot_file(name)
|
177
|
-
boot_files.detect { |file| File.basename(file, RB_EXT) == name.to_s }
|
178
|
-
end
|
179
|
-
end
|
180
|
-
end
|
181
|
-
end
|