вторник, 16 августа 2011 г.

Re: IoC & DI в Ruby (Inversion of Control & Dependency Injection)

IoC - в общем и целом, это концепция любого фреймворка, фактически одно из важнейших характерных отличий фреймворка от библиотеки. Поэтому рельсы и иже с ними - это IoC в чистом виде. Что же касается разбора зависимостей - этим в мире руби занимаются rubygems/bundler + autoload из активсуппорта. Которые, кстати, значительно проще, чем всякие многоэтажные конструкции.

16 августа 2011 г. 19:18 пользователь alexey.petrushin <alexey.petrushin@gmail.com> написал:
> IoC как концепция, по-моему, встроен в Ruby на уровне синтаксиса -
> блоки и yield. Мы в какой-то метод инжектируем произвольный блок, о
> котором метод ничего не знает, но его вызывает.  Есть сложности с
> нюансами типа нескольких зависимостей или возврата результатов, но,
> имхо, блоки это чистой воды IoC.

Ок, наверно не нужно было использовать термин IoC, он лишком много
всего обозначает.

Правильней будет назвать это Dependency Injection, или другими
словами: Micon - это компонент который автоматически разбирает
зависимости, собирает и конфигурирует приложение.
Или, более подробно, он позволяет сделать следущее:

- разделить приложение на части которые ничего не знают друг о друге
кроме имени и нескольких публичных методов
- полностью избавится от конфигов в коде
- просто перегружать любые значения конфигурации любых компонентов в
различных вариантах сборки и енвайронментах
- полностью избавится от 'require' и вообще какого-либо упоминания
зависимостей в виде путей и файлов
- автоматически управлять жизненным циклом группы связанных
компонентов (напр создавать и удалять request/params/session/
controller/view на каждый запрос)
- автоматически собирать компоненты для тестов и обеспечить изоляцию
между тестами (восстановение состояния после теста)
- за все это практически не нужно ничем платить (кроме запоминания 3х
методов и папки lib/components)

П.С.
Кстати, спасибо за отзывы, уже понял что то описание которое есть -
неверное: под IoC каждый понимает что-то свое и во вторых - IoC
отвечает на впорос "как делает", а место этого нужно дать ответ на
вопросы "зачем нужен/что делает".

--
--
Данное сообщение отправлено Вам, так как Вы являетесь подписчиком группы "RubyOnRails to russian" на группах Google.
FAQ группы находится по адресу: http://ru.wikibooks.org/wiki/RubyFAQ

 Для того, чтобы отправить сообщение в эту группу, пошлите его по адресу
ror2ru@googlegroups.com
 Чтобы отменить подписку на эту группу, отправьте сообщение по адресу: ror2ru-unsubscribe@googlegroups.com
 Дополнительные варианты находятся на странице группы http://groups.google.com/group/ror2ru?hl=ru

--
--
Данное сообщение отправлено Вам, так как Вы являетесь подписчиком группы "RubyOnRails to russian" на группах Google.
FAQ группы находится по адресу: http://ru.wikibooks.org/wiki/RubyFAQ
 
Для того, чтобы отправить сообщение в эту группу, пошлите его по адресу
ror2ru@googlegroups.com
Чтобы отменить подписку на эту группу, отправьте сообщение по адресу: ror2ru-unsubscribe@googlegroups.com
Дополнительные варианты находятся на странице группы http://groups.google.com/group/ror2ru?hl=ru

Комментариев нет:

Отправить комментарий