ich das vorhandene Modul A
aus einer Bibliothek ändern möchten:Überschreiben Klassenmethode von einem anderen Modul
module A
class << self
def foo
bar('Baz')
end
private
def bar(val)
val.upcase
end
end
end
A.foo
=> "BAZ"
module B
extend A
def self.bar(val)
val.downcase
end
end
B.foo # hoping for 'baz', but instead:
NoMethodError: undefined method `foo' for B:Module
Gibt es eine Möglichkeit Verfahren zur Wiederverwendung .foo
von A
und einzige Methode .bar
ändern?
Wenn Sie neugierig sind, ist dies das Modul, das ich wiederverwenden möchte: https://github.com/ruby-grape/grape/blob/v0.18.0/lib/grape/error_formatter/json.rb –
Macht ein Duplikat sein von: http://stackoverflow.com/questions/4662722/extending-a-ruby-module-in-an-other-module- including-the-module-methods? – Deradon
Sehr interessante Frage! –