Вот выдержка из моего модуля:
module Helpers
def self.reflect(callers_binding, callers_name)
callers_method = caller_locations.first.label
callers_instance = Module.const_get callers_name
callers_parameters = callers_instance
.method(callers_method)
.parameters.map do |_, arg_name|
[arg_name, callers_binding.local_variable_get(arg_name)]
end
callers_parameters = Hash[callers_parameters]
puts "#{callers_instance}.#{callers_method}: #{callers_parameters}"
end
end
module MyModule
def self.foo(arg1, arg2)
Helpers.reflect binding, self.to_s
puts arg1, arg2
end
def self.bar(arg1, arg2, arg3)
Helpers.reflect binding, self.to_s
puts arg1, arg2, arg3
end
end
- Как видно, я хотел бы напечатать отладочную информацию, используя
Helpers.reflect()
. вместо того, чтобы писать явно в каждой функции Helpers.reflect binding, self.to_s
, есть ли способ указать ruby выполнить Helpers.reflect binding, self.to_s
перед всеми функциями в модуле (кроме самого Helpers.reflect
) и избежать явной записи? - Как можно улучшить
Helpers.reflect()
метод, предоставив ему меньше (или ноль) аргументов?