Skip to content

Instantly share code, notes, and snippets.

@Shinpeim
Created September 10, 2015 09:45
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Shinpeim/b2284a4517208714a379 to your computer and use it in GitHub Desktop.
Save Shinpeim/b2284a4517208714a379 to your computer and use it in GitHub Desktop.
module SerializeForSomeMiddleware
module Nyan
def serialize_for_middleware
# Nyanは aの情報だけでよし
{a: @a}
end
end
module Wan
def serialize_for_middleware
# Wanは b も必要
{a: @a, b: @b}
end
end
end
class Nyan
def initialize(a, b)
@a = a
@b = b
end
end
class Wan
def initialize(a, b)
@a = a
@b = b
end
end
def send_to_middleware(x)
p x.serialize_for_middleware
end
nyan = Nyan.new(1,2)
wan = Wan.new(3,4)
nyan_for_middleware = nyan.extend(SerializeForSomeMiddleware::Nyan)
wan_for_middlewaer = wan.extend(SerializeForSomeMiddleware::Wan)
send_to_middleware(nyan_for_middleware) # => {a: 1}
send_to_middleware(wan_for_middlewaer) # => {a: 3, b: 4}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment