Кирилл Мокевнин @toxicmt
Программист & Предприниматель
Information
- Rating
- 1,441-st
- Location
- Miami Beach, Florida, США
- Date of birth
- Registered
- Activity
Specialization
Fullstack Developer, Chief Technology Officer (CTO)
Lead
Программист & Предприниматель
Это относится не только к руби, так как может быть реализовано не только с помощью блоков, но и лямбд и даже объектов. А вообще этот подход называется visitor pattern.
puts (1..6).map{|n| (1..n).to_a.tap{|a| a.reverse! if n%2==0}.join("-")}.join("\n")
Текущей инфраструктуре рельс много лет и симфони еще очень далеко до этого уровня. Посмотри как управляются гемы habrahabr.ru/blogs/ruby/85201/
>> а можно при этом частично переопределять функционал гемов в своем приложении?
Обычно они все неплохо кастомизируются сразу при этом в руби постоянно практикуется форк на гитхабе (если посмотреть профиль любого рубиста на гитхабе то можно увидеть десятки форков) и свои правки с последующим пулреквестом и уж если совсем что то нестандартное, то можно изменить текущий класс без наследования (руби же!), но такая необходимость бывает редко.
При чем здесь дерево сайта?
К рельсам это отношения вообще не имеет, впрочем, как и ко всем остальным фреймворкам. Поиск всегда ведется по какому то индексу, индекс всегда строится по каким то правилам и привязывается к сущностям приложения, это если говорить о внутренней индексации и я бы не назвал ее тупой, потому что там все может быть очень непросто из-за связанных ресурсов и многих других параметров.
2. Вам нужно почитать про полнотекстовый поиск. Каждый индексируемый документ имеет id который мы задаем сами. Поиск находит соответствия в документах и возвращает список айдишников. Дальше мы (или библиотека как в моем случае) делает запрос в базу и достает сущности.
Хотя возможно Вы спрашиваете как каждая статья знает ссылку на себя? Тогда нужно читать про роутинг.
Этот слип там в отладочных целях стоял. А так без задержки.
>> и еще вопросик. вот сфинкс все проиндексировал и теперь легко найдет где в базе есть «какая-нибудь строка». как по этой информации теперь определить на каком url встречается та самая строка?
Мы же ищем не просто по «базе», а по конкретной сущности, например, статье. Конечно в сам индекс может попасть сколько угодно информации из любых таблиц (это все определяется в define_index, но в итоге поиск возвращает уже созданные объекты нашего приложения.
articles = Article.search 'оборудование'
А дальше все как обычно.
Проверка на пустоту -> вывод в цикле (здесь же ссылки).