Антон Пискунов. Независимый разработчик.
«BeeGo для веб-приложений, API и демонов»
- Почему BeeGo? vs Revel and another guys.
- Что мы пишем на BeeGo? Наш личный опыт.
- Как написать облачный стартап и инфраструктурные сервисы на BeeGo за две недели.
- Sweet API, нэймспейсы и автодокументация.
- Демонизация BeeGo, к чему мы пришли?
- Разработчики, мэйнтейнинг, существующие проблемы
http://go-meetup-spb.timepad.ru/event/169777/
A classic task for an Automation QA Engineer these days:
- Developer and automate test coverage for some web or mobile software solution
This workshop offers a quick start for anyone who is interested in building a proper end-to-end test framework for those needs from the scratch.
We will use a robust and effective stack of technologies, verified by time and trusted by the community:
RUBY + CUCUMBER + WATIR + WATIRSOME + RSPEC/EXPECTATIONS
Антон Пискунов. Независимый разработчик.
«BeeGo для веб-приложений, API и демонов»
- Почему BeeGo? vs Revel and another guys.
- Что мы пишем на BeeGo? Наш личный опыт.
- Как написать облачный стартап и инфраструктурные сервисы на BeeGo за две недели.
- Sweet API, нэймспейсы и автодокументация.
- Демонизация BeeGo, к чему мы пришли?
- Разработчики, мэйнтейнинг, существующие проблемы
http://go-meetup-spb.timepad.ru/event/169777/
A classic task for an Automation QA Engineer these days:
- Developer and automate test coverage for some web or mobile software solution
This workshop offers a quick start for anyone who is interested in building a proper end-to-end test framework for those needs from the scratch.
We will use a robust and effective stack of technologies, verified by time and trusted by the community:
RUBY + CUCUMBER + WATIR + WATIRSOME + RSPEC/EXPECTATIONS
6. DEFINE_METHOD
Существуют два типа objectified
methods: объекты класса Method и
объекты класса UnboundMethod. Это
так называемые “связанные” и
“несвязанные” методы-объекты.
9. BOUND METHODS
“Связанные” методы всегда
ассоциированы с каким-то
конкретным объектом (receiver-ом).
Создаются при помощи вызова
метода Object#method.
13. UNBOUND METHODS
“Несвязанные” методы не привязаны к
конкретному объекту (receiver-у).
Они создаются при помощи вызова
метода Module#instance_method или
методом “отвязывания” обычного
метода.
15. UNBOUND METHODS
Unbound methods не могут быть
выполнены при помощи метода call.
Но они могут быть снова привязаны к
некоторому receiver-у при помощи
метода UnboundMethod#bind.
16. UNBOUND METHODS
Объект, к которому мы можем
подвязать unbound method должен
быть частью дерева наследования
оригинального класса, которому
принадлежал этот метод.
20. PROC IN DEFINE_METHOD
Итак, с методами разобрались.
Вернемся к блокам.
Если в качестве тела метода, который
создается через define_method, мы
передадим блок, то в каком контексте
он будет выполняться?
22. PROC IN DEFINE_METHOD
На помощь приходит
BasicObject#instance_eval.
Этот метод выполняет “evaluate”
строки, содержащей ruby код или
блока (но уже в контексте receiver-a).
24. PROC IN DEFINE_METHOD
Подобную к instance_eval миссию
выполняет instance_exec, принимающий
только блок, но зато с аргументами.
Кроме того, существует семантически
близкая пара методов class_eval и
class_exec, расширяющая контекст не
объекта, но класса, который объект
описывает.
T
I
P
28. PROC IN DEFINE_METHOD
Как и при статическом объявлении
метода, у вас остается возможность
определять аргументы по умолчанию.
Все как и раньше, только аргументы
определяются через в соответствии с
синтаксисом блока.