Есть ли способ обернуть все методы, определенные в моем собственном пространстве имен, с фильтром around/before/after, чтобы я мог регистрировать вызовы и неиспользуемые методы?Мониторинг каждого вызова метода в ruby
-7
A
ответ
1
Существует довольно много работы, чтобы сделать то, что вы хотите. . К счастью, вы не единственный человек, который хочет, и это было сделано раньше (как я уже говорил в комментариях, в разделе «аспектно-ориентированное программирование»
Вот пример использования Aspector перл:
#!/usr/bin/env ruby
require 'aspector'
watcher = Aspector do
around(/.*/, except: Object.methods) do |proxy, *args, &block|
puts "before #{proxy.name} on #{proxy.receiver}"
proxy.call(*args, &block)
puts "after #{proxy.name} on #{proxy.receiver}"
end
end
class Foo
def self.klass
puts "class method"
end
def inst
puts "instance method"
end
end
watcher.apply(Foo)
watcher.apply(Foo, class_methods: true)
# => before singleton_method_added on Foo
# after singleton_method_added on Foo
Foo.klass
# => before klass on Foo
# class method
# after klass on Foo
Foo.new.inst
# => before inst on #<Foo:0x007f9b648c83c0>
# instance method
# after inst on #<Foo:0x007f9b648c83c0>
Смежные вопросы
- 1. Мониторинг каждого метода, который называется
- 2. Проксирование каждого метода в Ruby
- 3. Иерархия вызова метода Ruby
- 4. Подписывание вызова дополнительного метода для каждого метода
- 5. Лучший способ вызова метода класса в ruby?
- 6. Выполнение обратного вызова до и после вызова метода каждого экземпляра?
- 7. Настройка обратного вызова для каждого вызова метода MOQ
- 8. Ruby: проблема вызова класса экземпляра из метода
- 9. Код Ruby не выполнен после вызова метода
- 10. Что можно назвать этапом вызова метода для каждого объекта?
- 11. Использование каждого в Ruby
- 12. Метод вызова класса Ruby из метода экземпляра
- 13. Ruby - метод вызова, передающий значения массива в качестве каждого параметра
- 14. Выполнение определенного кода для каждого вызова метода в C++
- 15. Java - лучший способ вызова метода каждого объекта в коллекции
- 16. Мониторинг синхронного метода для тайм-аута
- 17. В Ruby, как переменные передаются в аргументы без вызова метода?
- 18. вызова метода модель в JavaScript
- 19. Мониторинг конца метода в Objective C
- 20. Перенаправление в Ruby on Rails Controller с использованием метода вызова
- 21. Есть ли способ избежать вызова метода initialize redefined в ruby?
- 22. Мониторинг процесса приложения для каждого клиента
- 23. Почему элементы GUI удваиваются после каждого вызова метода repaint()?
- 24. NUnit - указание метода для вызова после каждого теста
- 25. Метод вызова Ruby для каждого с использованием «include Enumerable»
- 26. Java: добавление отладочного вызова для каждого метода с помощью BCEL
- 27. Как вызвать метод неявно после вызова каждого метода?
- 28. Возвращайтесь же значение для каждого экземпляра вызова метода
- 29. Функция обратного вызова Java для каждого метода класса
- 30. StringBuffer собирается добавить путь для каждого вызова метода
Этот шаблон обычно называют «аспектно-ориентированным программированием», ищем Ruby, и это должно дать вам множество различных драгоценных камней, которые вы можете использовать, например, Aspector или Aquarium должны делать то, что вы хотите. – Amadan
Возможный дубликат [ Выполнение кода для каждого вызова метода в модуле Ruby] (http://stackoverflow.com/questions/5513558/executing-code-for-every-method-call-in-a-ruby-module) –