Ruby: alias_method для статического метода модуля

Учитывая этот модуль

module Test
  def self.foo(v)
    puts "Test.foo with #{v}"
  end
end

Следующее не работает

module Test  
  alias_method :bar, :foo
  # ...
end

хотя это работает, например, методы. Я получаю следующую ошибку

NameError: undefined method `foo' for module `Test'

Моя цель - переопределить self.foo следующим образом.

def self.foo(v)
  self.bar(v + " monkey patched")
end

Есть ли статический метод псевдонима?

Спасибо,


person chepukha    schedule 15.06.2017    source источник
comment
Я думал, вы просто хотели связать метод класса с другим методом класса (я предоставил ответ, который делает это). Однако я не понимаю вашего комментария: ваша цель переопределить foo определенным образом. Не могли бы вы уточнить это, желательно с правкой.   -  person Cary Swoveland    schedule 16.06.2017
comment
Итак, существует модуль Test, чей метод foo я хочу переопределить. Но я хочу использовать существующую реализацию и немного изменить ее, например. усиливая аргументы. Ваше решение работает для меня на самом деле.   -  person chepukha    schedule 16.06.2017