Module: Tapioca::BundlerExt::AutoRequireHook
- Extended by:
- T::Sig
- Defined in:
- lib/tapioca/bundler_ext/auto_require_hook.rb
Overview
This is a module that gets prepended to ‘Bundler::Dependency` and makes sure even gems marked as `require: false` are required during `Bundler.require`. @requires_ancestor: ::Bundler::Dependency
Class Method Summary collapse
- .enabled? ⇒ Boolean
-
.excluded?(name) ⇒ Boolean
: (untyped name) -> bool.
-
.override_require_false(exclude:, &blk) ⇒ Object
: [Result] (exclude: Array) { -> Result } -> Result.
Instance Method Summary collapse
-
#autorequire ⇒ Object
: -> untyped.
Class Method Details
.enabled? ⇒ Boolean
23 24 25 |
# File 'lib/tapioca/bundler_ext/auto_require_hook.rb', line 23 def enabled? @enabled end |
.excluded?(name) ⇒ Boolean
: (untyped name) -> bool
19 20 21 |
# File 'lib/tapioca/bundler_ext/auto_require_hook.rb', line 19 def excluded?(name) @exclude.include?(name) end |
.override_require_false(exclude:, &blk) ⇒ Object
: [Result] (exclude: Array) { -> Result } -> Result
28 29 30 31 32 33 34 |
# File 'lib/tapioca/bundler_ext/auto_require_hook.rb', line 28 def override_require_false(exclude:, &blk) @enabled = true @exclude = exclude blk.call ensure @enabled = false end |
Instance Method Details
#autorequire ⇒ Object
: -> untyped
38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
# File 'lib/tapioca/bundler_ext/auto_require_hook.rb', line 38 def autorequire value = super # If autorequire is not enabled, we don't want to force require gems return value unless AutoRequireHook.enabled? # If the gem is excluded, we don't want to force require it, in case # it has side-effects users don't want. For example, `fakefs` gem, if # loaded, takes over filesystem operations. return value if AutoRequireHook.excluded?(name) # If a gem is marked as `require: false`, then its `autorequire` # value will be `[]`. But, we want those gems to be loaded for our # purposes as well, so we return `nil` in those cases, instead, which # means `require: true`. return if value == [] value end |