module Foo
class Bar < Module
def initialize(options = {})
super()
puts options
end
end
end
class Pub
include Foo::Bar.new(a: :b)
include Foo::Bar.new
include Foo::Bar # <- does not work as Bar is a class of type Class
end
Pub.newNote: class methods can be called via . or ::.
module Foo
def self.Bar(*args)
Bar.new(*args)
end
class Bar < Module
def initialize(options = {})
super()
puts options
end
end
end
class Pub
include Foo::Bar(a: :b)
include Foo::Bar()
include Foo::Bar # <- does not work as Bar class, of type Class, is returned, the Foo#Bar method is not called
end
Pub.newmodule Foo
class Bar < Module
def self.[](options = {})
new(options)
end
def initialize(options = {})
super()
puts options
end
end
end
class Pub
include Foo::Bar[a: :b]
include Foo::Bar[]
include Foo::Bar # does not work, Bar is a class of type Class, the `[]` method is not called
end
Pub.newmodule Foo
def self.bar(options = {})
Bar.new(options)
end
class Bar < Module
def initialize(options = {})
super()
puts options
end
end
end
class Pub
include Foo.bar
include Foo.bar(a: :b)
end
Pub.new
Is there any way to configure module with block?