Вызовите метод перед всеми другими методами - PullRequest
1 голос
/ 21 марта 2020

Вот выдержка из моего модуля:

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
  1. Как видно, я хотел бы напечатать отладочную информацию, используя Helpers.reflect(). вместо того, чтобы писать явно в каждой функции Helpers.reflect binding, self.to_s, есть ли способ указать ruby выполнить Helpers.reflect binding, self.to_s перед всеми функциями в модуле (кроме самого Helpers.reflect) и избежать явной записи?
  2. Как можно улучшить Helpers.reflect() метод, предоставив ему меньше (или ноль) аргументов?
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...