Прочитал в статье про RoR на Never-Invited.com:
Только нужно понимать одну вещь: Rails облегчает стандартные вещи. Если вам нужно что-то уникальное от начала и до конца, то Rails будет скорее мешать. Как, впрочем, и любой другой framework.
Секундочку! Я никогда не писал ничего в Rails, поэтому не могу сказать, насколько это правильно для него. Но вот для Django (который попадает под определение "любой другой фреймворк") это совершенно неверно. Я даже, пожалуй, соглашусь, что это -- мешать сделать нестандартное -- черта очень многих фреймворков, но это ни в коем случае не обязательное зло, присущее любому.
Одна из вещей, которая меня "купила" в Django -- это великолепная демонстрация того, как работает слабая связность компонентов. Помимо того, что любой компонент Django можно заменить на что-то другое, так еще и Django не навязывает (хоть и рекомендует) никакой определенной архитектуры построения приложения. Это ваше приложение, стройте его, как считаете нужным.
Пример. Есть у меня проект некоего фотосервиса, позволяющего заказывать печать фотографий. По изначальной задумке он должен был являться фронт-ендом к некой внутренней БД компании: принимать заказы на вебе и отправлять их туда. Кроме того, он должен узнавать зарегистрированных клиентов и показывать им, скажем, персональные скидки. Это тут же означает, что я не могу пользоваться стандартной Django'овской системой авторизации клиентов, потому что она предполагает хранение своих клиентов у себя в базе, а мне нужны клиенты из внутренней базы.
Так вот, никаких проблем с привязкой этого клиента внутри приложения у меня не возникло: по образу и подобию Django у меня есть система авторизации для конкретных страниц, у меня доступен этот клиент в шаблонах, и т. д.
То есть да, часть автоматизма, предлагаемого фреймворком, оказалась потерянной, но никаких дополнительных трудностей из-за него я не приобрел. Только плюсы: я фактически скопировал из кода Django все подходы к выставлению клиента в приложении :-).
Комментарии: 9
Макс Лапшин
19.06.06 10:30
Иван, ты все правильно понял. Человек, который писал эти строки несколько «не в теме»
В RoR, конечно же, если тебе нужны только определенные куски, ты и будешь пользоваться только этими кусками.
Собственнно ненужным может быть скорее всего только ActiveRecord, если нет работы с реляционной БД.
Скорее всего так пишут люди, пришедшие из PHP. Из такого дремучего PHP:
[? foreach(mysql_fetch() as $key => $value) { ?]
[tr][td]....[/tr]
[? } ?]
У которых либо «как в туториале», либо как они привыкли в PHP. А идеи MVC от них так же далеки, как и вообще идеи ООП. А приведенный мной пример действительно в RoR реализовать не так просто.
Каков бы ни был проект, с RoR кода писать не больше и не корявее, чем с PHP. Т.е. без RoR. Так понимаю, что с тем же Django все тоже самое.
Олег Шимчик
19.06.06 16:44
Согласен. Все абсолютно верно. Виноват, сказал далеко не то, что хотел. Так бывает :-)
2Макс Лапшин: Кстати да, иногда дает знать неправильное питание, долгое использование не тех инструментов. Впрочем, не судите строго. Это ведь, сами понимаете, не так просто, сделать сознательный шаг сразу от "дремучего php" к использованию такого языка как ruby и таких инструментов, как rails. ;-) Так что все нормально.
Denis Barushev
19.06.06 17:47
И чего вы все друг за другом начали "наезжать" на php? Может, вы просто не умеете его готовить? Или поддались массовой истерии на волне роликов "блог за 15 минут"? Я даже на голом php тоже могу написать аналогичный блог за 15 минут.
Может просто ваш опыт работы только и позволяет, что каждый месяц скакать с фреймворка на фреймворк и кричать, что предыдущий был плох?
Олег Шимчик
19.06.06 19:57
Не исключаю такой возможности. Но вряд ли.
Было время, мне очень нравился PHP. Мои потребности он вполне удволетворял. Но нужно понимать, что на PHP мир клином не сошелся и то, что он предлагает, это лишь десятая доля от того, что способен предложить современный язык программирования. Достаточно только оглядется и понять, что все то же самое уже давно можно делать проще и эффективней. Если я не считаю PHP таким уж хорошим языком программирования, проработав очень тесно с ним три с половиной года, то почему я должен говорить, что это отличный язык? Я не испытываю никакой особенной нелюбви к PHP. Он такой, какой он есть. Но тот стиль и те средства разработки, которые он мне предлагает, меня не устраивают.
А вообще, это очередная религиозная война из разряда Windows vs Linux или Кит vs Слон. А в них я не участвую принципиально.
Макс Лапшин
19.06.06 21:01
2Олег: да, без каких либо личных претензий. Сам переходил с "дремучего php". Это я не к личному наезду, а к тому, что действительно получается так, что если человек начинает понимать, в чем зло процедурного мышления, то они и выбирает что-то отличное от PHP. Более пригодное для практики объектно ориентированного программирования, будь то питон или тот же RoR.
А религиозной войны никакой и нет. Тут выбирается инструмент под мышление. У меня есть несколько знакомых, которые искренне считают, что для них процедурное программирование более близко и понятно. Как говорится, вперед и с песней :)
Если вы собираетесь заниматься фаллометрией, то я на это не настроен. Я услышал ваше мнение и дальше лично мне оно уже не интересно.
jcrow
19.06.06 22:21
2all: где вы берете такой php? мой, знаете, ведет себя совершенно нормально и предсказуемо. и ОО код выполняется так, как-будто и не догадывается о всех тех ужасах с php, про которые вы тут рассказываете. что я делаю не так?..
такое складывается впечатление, что ведущие разработчики тем более ведущие, чем изысканней смогут обгадить php.
Иван, Ваш учебник замечателен, и выделение "одного браузера" в отдельную категорию там совершенно уместно и объективно, но организация, часто с вашей подачи, "наездов" на php в комментариях выглядит несерьезно. на вас же дети смотрят и могут сложить неправильное представление...
Иван Сагалаев
19.06.06 23:10
Прошу прощения, но в своей статье не могу отыскать хотя бы какого-то слабого намека на PHP. И честно признаюсь, что даже о нем не думал, когда писал.
Другое дело, что эта тема все равно будет возникать в комментариях даже и без моего участия. Чтобы ее не было, мне бы пришлось вообще не писать про веб-фреймворки :-).
Тем не менее, я призываю всех комментировать именно статью, а не просто считать ее отправной точкой для отвлеченной дискуссии :-)
Макс Лапшин
22.06.06 12:04
Касательно темы вопроса, могу вот что добавить.
Действительно, если, скажем, создавать оффлайновое приложение, которые ходит к базе, то могут возникнуть затруднения.
Какая структура у рельсов:
ActiveRecord, ActiveView, ActionWebService, ActionMailer, ActionSupport, ну и контроллер.
Без ActionSupport-а вообще никто не заведется. Там всевозможные расширения к различным объектам. ActionMailer будет работать через ActionView.
Соответственно, что бы воспользоваться почтой, надо будет создавать контроллеры. Ну да это и правильно. Какое же десктопное приложение без MVC? Насколько это будет удобно сделать? Не знаю, не пробовал. Т.е. вопрос стоит: насколько удобно выдрать диспетчинг урлов. Хрен знает.
P.S. Надпись внизу над «Категории» написана юникодными раскоряками.
Дьячук Антон
25.05.07 08:42
цитата на http://www.rubyonrails.org/
"Ruby on Rails(TM) is an open-source web framework"
Прошу обратить внимание на слово WEB.
Не нужно писать приложение под rails только для того чтобы использовать ActiveRecord, свет клином на нем не сошелся.