Module: EnhanceModule

Extended by:
T::Generic, T::Sig
Defined in:
lib/enhance_module.rb,
lib/enhance_module/version.rb

Overview

This module can be included in the singleton class of a module to make it able to extend objects in a typed, sorbet-friendly way.

require "enhance_module"

module MyModule
  class << self
    include EnhanceModule
    has_attached_class! { { fixed: MyModule } }
  end

  sig { void }
  def my_module_method; end
end

class MyClass
  extend T::Sig

  sig { void }
  def my_class_method; end
end

obj = MyClass.new
obj.my_class_method # ok!

# extend the object with `MyModule`
extended_obj = MyModule.enhance(obj)
extended_obj.my_class_method  # ok!
extended_obj.my_module_method # ok!

Defined Under Namespace

Modules: ClassMethods

Constant Summary collapse

VERSION =
"0.1.0"

Instance Method Summary collapse

Instance Method Details

#enhance(obj) ⇒ Object



47
48
49
# File 'lib/enhance_module.rb', line 47

def enhance(obj)
  T.unsafe(obj).extend(self)
end