module Tapioca::BundlerExt::AutoRequireHook

def autorequire

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