У меня есть каркас Ruby-Cucumber. Мне нужно использовать метод method_missing
, чтобы избежать написания нескольких повторяющихся функций. Где я должен разместить свой method_missing
? В любом файле .rb
под папкой support
? Или он должен идти в каком-то другом конкретном файле?Где я должен определить method_missing в структуре Rubber Rubber?
ответ
Определение method_missing
, как и любой вспомогательный метод огурца, в .rb
файл в каталоге support
и в модуле, который вы затем перейти к the Cucumber World
:
module MethodMissing
def method_missing(method)
puts "You said #{method}"
end
end
World MethodMissing
Затем можно вызывать методы отсутствующие в ступенчатых определений.
Как и любой вспомогательный метод огурца, method_missing
следует определять только на огурце World
. Если вы определили его на верхнем уровне файла поддержки, он будет определен на объекте верхнего уровня Ruby и доступен повсеместно, что не имеет аналогов и может сломать другой код.
я намеренно не отложить до super
, поскольку World
не определяет method_missing
, или определить respond_to_missing?
, так как у меня не было никаких планов для вызова method(:foo)
на World
, но вы можете сделать эти вещи, если вы предпочитаете всегда делать это, когда вы определяете method_missing
.
- 1. Как печатать журналы консоли браузера, используя автоматизацию Rubber Rubber?
- 2. Java - Rubber alpha function
- 3. Понизить рельсы камень с Rubber
- 4. Capistrano Rubber Phusion Passenger Enterprise Config
- 5. ios - не удалось стереть UIImage, как Rubber
- 6. Rails rubber - cap command не найден
- 7. NoMethodError on Rails Vulcanize with Rubber
- 8. CSS Font Styles - Rubber Stamp effect
- 9. Рекомендации Rubber On Rails для скрепки?
- 10. Текущее положение курсора при использовании библиотеки Rubin Rubber
- 11. MySQL не будет подключаться к EC2 с помощью Rubber
- 12. Тайм-аут :: Ошибка: исполнение истекло с помощью Capistrano/Rubber
- 13. rubber capistrano deploy to ec2 from bitbucket получение разрешения отклонено
- 14. Не удается развернуть на AWS EC2 с Rubber
- 15. Рельсы развертываются в ec2 с Rubber: mod_passenger.so: невозможно открыть файл общих объектов
- 16. Невозможно определить method_missing в верхнем объекте
- 17. Где я должен определить DISALLOW_COPY_AND_ASSIGN макрос в Xcode
- 18. Rubber считает, что недостающее правило, когда он четко определил его раньше
- 19. xaml Scrollviewer - отключить Overscrolling/rubber-band-effect/snapback-effect/bouncing всего окна
- 20. где я должен создать pthread
- 21. Где я должен реализовать SeekBar.onSeekBarChangeListener?
- 22. ruby: нет такого файла для загрузки - ubygems (LoadError) при запуске cap rubber: create_staging
- 23. Решения для хостинга Rubber и Amazon EC2 (Net :: SSH :: AuthenticationFailed: root)
- 24. Первый раз, используя Rubber для развертывания приложения Rails на Amazon EC2
- 25. Method_missing не работает, когда он должен
- 26. Где я должен определить все объекты моего вида?
- 27. Где я должен определить свои интерфейсы для получения хорошей архитектуры?
- 28. Где я должен определить свой NinjectModule и мои заводы?
- 29. Jersey 2.22: Где я должен определить местоположение ресурсов REST?
- 30. Должен ли я перейти к сущностной структуре
Пробовать здесь: Сообщение озаглавлено: «Переопределить метод_изменения для методов класса и экземпляра?» и вы можете получить некоторые идеи о том, как это сделать. http://stackoverflow.com/questions/22846777/override-method-missing-for-class-and-instance-methods – BKSpurgeon