module Test
def test # This is an instance method
puts "test"
end
puts "testing"
test # This is a call to a module method
end
Два полностью не связаны. Где-то выше в вашей цепочке наследования у вас есть метод модуля с именем test
, который принимает хотя бы один аргумент. (Я предполагаю, что это метод Kernel#test
, который принимает два аргумента.) Поскольку вы называете его без аргумента, вы получаете исключение ArgumentError
.
Если бы вы предоставили чуть более подробную информацию о том, что является фактической проблемой, которую вы пытаетесь решить, можно было бы дать лучший ответ. А до тех пор вот пара идей:
Сделать метод модульным методом:
module Test
def self.test; puts "test" end
puts "testing"
test
end
Расширить модуль до самого себя:
module Test
def test; puts "test" end
extend self
puts "testing"
test
end
Создать экземпляр модуля:
module Test
def test; puts "test" end
end
puts "testing"
Object.new.extend(Test).test
Смешайте модуль в класс и создайте его экземпляр:
module Test
def test; puts "test" end
end
class Foo; include Test end
puts "testing"
Foo.new.test
Смешайте модуль в Module
:
module Test
def test; puts "test" end
end
class Module; include Test end
module Test
puts "testing"
test
end
Смешайте модуль в Object
:
module Test
def test; puts "test" end
end
class Object; include Test end
puts "testing"
test
Смешайте модуль в объект main
:
module Test
def test; puts "test" end
end
include Test
puts "testing"
test