AI
Size: a a a
AI
NP
AI
A¯
RT
A¯
AI
A¯
AI
A¯
AI
module MyMixin
def foo
'mixin'
end
end
class MyKlass
def foo
'origin'
end
end
MyKlass.prepend(MyMixin)
puts MyKlass.new.foo
AI
AI
AI
AI
RI
RI
AI
module MyMixin
def self.included(klass)
# Methods that will be available on instance
klass.class_eval do
def foo
'mixin'
end
end
# Methods that will be available on class itself (static methods)
klass.instance_eval do
def bar
'mixin'
end
end
end
end
class MyKlass
def foo
'origin'
end
def self.bar
'origin'
end
end
MyKlass.include(MyMixin)
puts MyKlass.new.foo
puts MyKlass.bar
AI
require 'active_support/concern'
module MyMixin
extend ActiveSupport::Concern
included do
def foo
'mixin'
end
def self.bar
'mixin'
end
end
end
class MyKlass
def foo
'origin'
end
def self.bar
'origin'
end
end
MyKlass.include(MyMixin)
puts MyKlass.new.foo
puts MyKlass.bar