У меня есть модуль ruby для констант. Он имеет список переменных и 1 метод, который применяет форматирование. Я не могу получить доступ к методу в этом модуле. Любая идея почему?
Доступ к модулю Ruby Module
Ответ 1
Если вы include
модуль, метод становится методом экземпляра, но если вы extend
модуль, то он становится методом класса.
module Const
def format
puts 'Done!'
end
end
class Car
include Const
end
Car.new.format # Done!
Car.format # NoMethodError: undefined method format for Car:Class
class Bus
extend Const
end
Bus.format # Done!
Bus.new.format # NoMethodError: undefined method format
Ответ 2
module Foo
def self.hello # This is a class method
puts "self.hello"
end
def hello # When you include this module, it becomes an instance method
puts "hello"
end
end
Foo.hello #=> self.hello
class Bar
include Foo
end
Bar.new.hello #=> hello
Ответ 3
Как правило, с модулями эти вещи должны происходить:
- > Путь автозагрузки в application.rb, добавить строку:
config.autoload_paths += %W(#{config.root}/lib)
- > Установить модуль в /lib
- > Включить модуль с 'include NAMEOFMODULE'
(Если у модуля есть символ подчеркивания, например game_engine, вам нужно включить GameEngine)