Вы можете упаковать отдельные методы в свои собственные модули и расширить их:
module MyModule
module NewFunc
def new_func
puts "hello"
end
end
end
class A
extend MyModule::NewFunc
end
A.new_func
С помощью некоторого метапрограммирования / создания обезьян вы могли бы расширить только некоторые методы модуля, но я думаю, что подход, который я показал, работает достаточно хорошо.
Если вы хотите сделать так, чтобы отдельные методы могли быть импортированы, или вы можете импортировать все из них, вы можете сделать это так:
module MyModule
module NewFunc
def new_func
puts "hello"
end
end
module NewFunc2
def new_func2
puts "hello2"
end
end
include NewFunc, NewFunc2 # this adds them to MyModule directly
end
class A
extend MyModule
end
A.new_func
A.new_func2