bootinq 1.2.0 → 1.4.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/bootinq.rb +57 -19
- data/lib/bootinq/switch.rb +20 -0
- data/lib/bootinq/version.rb +1 -1
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4bbde8bd5a9047488c41a60788b57c99ffba1de61217a0e5ac6613a856e5fc66
|
4
|
+
data.tar.gz: 6932d67aa5b2f484726331b5f1483352bc1f6bd535ea187dabe13d7e909630ae
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 48c42edfe5b1a4475ad65b5cec66e6a5a124073b6aea9b6fceeea94cc76ce3ddac1786c30f4c0290cbe677e40a677e4ce4350e080867d3a8032fd36a0552d12e
|
7
|
+
data.tar.gz: 95db837f38266267c0fe733edcd91ad51694ff8c5a90c849e1f28335637a385cda2de1ea1c285e5a6e8f8bb5f00be2e121b5ef27bbfe9213a3ecf17e97454c22
|
data/lib/bootinq.rb
CHANGED
@@ -4,6 +4,7 @@ require "yaml"
|
|
4
4
|
require "singleton"
|
5
5
|
require "forwardable"
|
6
6
|
require "bootinq/component"
|
7
|
+
require "bootinq/switch"
|
7
8
|
|
8
9
|
# = Bootinq
|
9
10
|
#
|
@@ -66,28 +67,36 @@ class Bootinq
|
|
66
67
|
# :call-seq:
|
67
68
|
# Bootinq.require(*groups, verbose: false, &block)
|
68
69
|
#
|
69
|
-
#
|
70
|
-
#
|
71
|
-
# invokes the <tt>Bootinq.setup</tt> method with the given verbose key argument & block,
|
72
|
-
# and, finally, gets Bundler to require the given groups.
|
70
|
+
# Invokes the <tt>Bootinq.init</tt> method with the given verbose key argument & block,
|
71
|
+
# and, finally, makes Bundler to require the given groups.
|
73
72
|
def self.require(*groups, verbose: false, &block) # :yields: Bootinq.instance
|
74
|
-
|
75
|
-
|
76
|
-
setup(verbose: verbose, &block)
|
77
|
-
|
73
|
+
init(verbose: verbose, &block)
|
78
74
|
Bundler.require(*instance.groups(*groups))
|
79
75
|
end
|
80
76
|
|
81
77
|
# :call-seq:
|
82
|
-
# Bootinq.setup(verbose: false, &block)
|
78
|
+
# Bootinq.setup(*groups, verbose: false, &block)
|
83
79
|
#
|
84
|
-
#
|
80
|
+
# Invokes the <tt>Bootinq.init</tt> method with the given verbose key argument & block,
|
81
|
+
# and, finally, makes Bundler to setup the given groups.
|
82
|
+
def self.setup(*groups, verbose: false, &block) # :yields: Bootinq.instance
|
83
|
+
init(verbose: verbose, &block)
|
84
|
+
Bundler.setup(*instance.groups(*groups))
|
85
|
+
end
|
86
|
+
|
87
|
+
# :call-seq:
|
88
|
+
# Bootinq.init(verbose: false, &block) -> true or false
|
89
|
+
#
|
90
|
+
# Initializes itself. Sets the BOOTINQ_PATH enviroment variable if it is missing.
|
91
|
+
# To track inquired components use <tt>verbose: true</tt> key argument.
|
85
92
|
# Optionally yields block within the own instance's binding.
|
86
|
-
def self.
|
93
|
+
def self.init(verbose: false, &block) # :yields: Bootinq.instance
|
94
|
+
ENV['BOOTINQ_PATH'] ||= File.expand_path('../bootinq.yml', caller_locations(2, 1)[0].path)
|
95
|
+
|
87
96
|
instance
|
97
|
+
instance.instance_variable_set(:@_on_ready, block.to_proc) if block_given?
|
88
98
|
puts "Bootinq: loading components #{instance.components.join(', ')}" if verbose
|
89
|
-
instance.
|
90
|
-
instance
|
99
|
+
instance.ready!
|
91
100
|
end
|
92
101
|
|
93
102
|
attr_reader :flags
|
@@ -110,6 +119,25 @@ class Bootinq
|
|
110
119
|
config['mount'].each { |flag, name| enable_component(name, flag: flag, as: Mountable) }
|
111
120
|
end
|
112
121
|
|
122
|
+
delegated def ready? # :no-doc:
|
123
|
+
!!@ready
|
124
|
+
end
|
125
|
+
|
126
|
+
# :call-seq:
|
127
|
+
# Bootinq.ready! -> nil or self
|
128
|
+
#
|
129
|
+
# At the first call marks Bootinq as ready and returns the instance,
|
130
|
+
# otherwise returns nil.
|
131
|
+
delegated def ready!
|
132
|
+
return if ready?
|
133
|
+
@ready = true
|
134
|
+
if defined?(@_on_ready)
|
135
|
+
instance_exec(&@_on_ready)
|
136
|
+
remove_instance_variable :@_on_ready
|
137
|
+
end
|
138
|
+
freeze
|
139
|
+
end
|
140
|
+
|
113
141
|
# :call-seq:
|
114
142
|
# Bootinq.enable_component(name, flag: [, as: Component])
|
115
143
|
#
|
@@ -228,6 +256,22 @@ class Bootinq
|
|
228
256
|
is_matched
|
229
257
|
end
|
230
258
|
|
259
|
+
# :call-seq:
|
260
|
+
# Bottinq.switch(*parts) { block } -> nil
|
261
|
+
#
|
262
|
+
# Collector method.
|
263
|
+
#
|
264
|
+
# Example:
|
265
|
+
#
|
266
|
+
# Bootinq.switch do |part|
|
267
|
+
# part.frontend { … }
|
268
|
+
# part.backend { … }
|
269
|
+
# end
|
270
|
+
delegated def switch # :yields: Bootinq::Switch.new
|
271
|
+
yield(Switch.new)
|
272
|
+
nil
|
273
|
+
end
|
274
|
+
|
231
275
|
# Freezes every instance variables and the instance itself.
|
232
276
|
def freeze
|
233
277
|
@_value.freeze
|
@@ -236,10 +280,4 @@ class Bootinq
|
|
236
280
|
@components.freeze
|
237
281
|
super
|
238
282
|
end
|
239
|
-
|
240
|
-
def self.new
|
241
|
-
super.freeze
|
242
|
-
end
|
243
|
-
|
244
|
-
private_class_method :new
|
245
283
|
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
class Bootinq
|
4
|
+
class Switch < ::BasicObject # :no-doc:
|
5
|
+
undef_method :==
|
6
|
+
undef_method :equal?
|
7
|
+
|
8
|
+
def raise(*args) # :no-doc:
|
9
|
+
::Object.send(:raise, *args)
|
10
|
+
end
|
11
|
+
|
12
|
+
def method_missing(name, *)
|
13
|
+
if ::Bootinq.enabled?(name)
|
14
|
+
yield()
|
15
|
+
else
|
16
|
+
nil
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
data/lib/bootinq/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bootinq
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.2
|
4
|
+
version: 1.4.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Anton
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-06-
|
11
|
+
date: 2020-06-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -58,6 +58,7 @@ files:
|
|
58
58
|
- lib/bootinq.rb
|
59
59
|
- lib/bootinq.yml
|
60
60
|
- lib/bootinq/component.rb
|
61
|
+
- lib/bootinq/switch.rb
|
61
62
|
- lib/bootinq/version.rb
|
62
63
|
homepage: https://github.com/estum/bootinq
|
63
64
|
licenses:
|
@@ -78,8 +79,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
78
79
|
- !ruby/object:Gem::Version
|
79
80
|
version: '0'
|
80
81
|
requirements: []
|
81
|
-
|
82
|
-
rubygems_version: 2.7.6
|
82
|
+
rubygems_version: 3.0.3
|
83
83
|
signing_key:
|
84
84
|
specification_version: 4
|
85
85
|
summary: Rails Boot Inquirer
|