shaks
@shaks

Как вызвать статический метод у модуля класса?

нубовый вопрос.. Допустим мы имеем
# tmp.rb
module FooModule
  def self.foo_method
    puts 'TestModule'
  end
end

class BarClass
  include FooModule
end


как видно в коде выше, У нас есть класс BarClass, который инклудит в себя модуль FooModule
Соответственно, у класса появляется статический метод foo_method
Почему у меня не получается к нему обратиться?
$ irb
2.4.1 :001 > require './tmp.rb'
 => true 
2.4.1 :002 > BarClass.foo_method
NoMethodError: undefined method `foo_method' for BarClass:Class
        from (irb):2
        from /home/shaks/.rvm/rubies/ruby-2.4.1/bin/irb:11:in `<main>'
2.4.1 :003 >
  • Вопрос задан
  • 235 просмотров
Решения вопроса 1
@lebron32rus
Senior Software Engineer
include — добавляет методы модуля объекту.
extend — вызывает include для синглтон-класса объекта.

Правильный вариант:
module FooModule
  def foo_method
    puts 'TestModule'
  end
end

class BarClass
  extend FooModule
end


Подробнее
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы