Прочитал в статье про RoR на Never-Invited.com:

Только нужно понимать одну вещь: Rails облегчает стандартные вещи. Если вам нужно что-то уникальное от начала и до конца, то Rails будет скорее мешать. Как, впрочем, и любой другой framework.

Секундочку! Я никогда не писал ничего в Rails, поэтому не могу сказать, насколько это правильно для него. Но вот для Django (который попадает под определение "любой другой фреймворк") это совершенно неверно. Я даже, пожалуй, соглашусь, что это — мешать сделать нестандартное — черта очень многих фреймворков, но это ни в коем случае не обязательное зло, присущее любому.

Одна из вещей, которая меня "купила" в Django — это великолепная демонстрация того, как работает слабая связность компонентов. Помимо того, что любой компонент Django можно заменить на что-то другое, так еще и Django не навязывает (хоть и рекомендует) никакой определенной архитектуры построения приложения. Это ваше приложение, стройте его, как считаете нужным.

Пример. Есть у меня проект некоего фотосервиса, позволяющего заказывать печать фотографий. По изначальной задумке он должен был являться фронт-ендом к некой внутренней БД компании: принимать заказы на вебе и отправлять их туда. Кроме того, он должен узнавать зарегистрированных клиентов и показывать им, скажем, персональные скидки. Это тут же означает, что я не могу пользоваться стандартной Django'овской системой авторизации клиентов, потому что она предполагает хранение своих клиентов у себя в базе, а мне нужны клиенты из внутренней базы.

Так вот, никаких проблем с привязкой этого клиента внутри приложения у меня не возникло: по образу и подобию Django у меня есть система авторизации для конкретных страниц, у меня доступен этот клиент в шаблонах, и т. д.

То есть да, часть автоматизма, предлагаемого фреймворком, оказалась потерянной, но никаких дополнительных трудностей из-за него я не приобрел. Только плюсы: я фактически скопировал из кода Django все подходы к выставлению клиента в приложении :-).

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

  1. Макс Лапшин

    Иван, ты все правильно понял. Человек, который писал эти строки несколько «не в теме»
    В RoR, конечно же, если тебе нужны только определенные куски, ты и будешь пользоваться только этими кусками.
    Собственнно ненужным может быть скорее всего только ActiveRecord, если нет работы с реляционной БД.

    Скорее всего так пишут люди, пришедшие из PHP. Из такого дремучего PHP:
    [? foreach(mysql_fetch() as $key => $value) { ?]
    [tr][td]....[/tr]
    [? } ?]

    У которых либо «как в туториале», либо как они привыкли в PHP. А идеи MVC от них так же далеки, как и вообще идеи ООП. А приведенный мной пример действительно в RoR реализовать не так просто.

    Каков бы ни был проект, с RoR кода писать не больше и не корявее, чем с PHP. Т.е. без RoR. Так понимаю, что с тем же Django все тоже самое.

  2. Олег Шимчик

    Согласен. Все абсолютно верно. Виноват, сказал далеко не то, что хотел. Так бывает :-)
    2Макс Лапшин: Кстати да, иногда дает знать неправильное питание, долгое использование не тех инструментов. Впрочем, не судите строго. Это ведь, сами понимаете, не так просто, сделать сознательный шаг сразу от "дремучего php" к использованию такого языка как ruby и таких инструментов, как rails. ;-) Так что все нормально.

  3. Denis Barushev

    ...дает знать неправильное питание, долгое использование не тех инструментов. Это ведь, сами понимаете, не так просто, сделать сознательный шаг сразу от “дремучего php” к использованию такого языка как ruby и таких инструментов, как rails. ;-)

    И чего вы все друг за другом начали "наезжать" на php? Может, вы просто не умеете его готовить? Или поддались массовой истерии на волне роликов "блог за 15 минут"? Я даже на голом php тоже могу написать аналогичный блог за 15 минут.

    Может просто ваш опыт работы только и позволяет, что каждый месяц скакать с фреймворка на фреймворк и кричать, что предыдущий был плох?

  4. Олег Шимчик

    Может просто ваш опыт работы только и позволяет, что каждый месяц скакать с фреймворка на фреймворк и кричать, что предыдущий был плох?

    Не исключаю такой возможности. Но вряд ли.
    Было время, мне очень нравился PHP. Мои потребности он вполне удволетворял. Но нужно понимать, что на PHP мир клином не сошелся и то, что он предлагает, это лишь десятая доля от того, что способен предложить современный язык программирования. Достаточно только оглядется и понять, что все то же самое уже давно можно делать проще и эффективней. Если я не считаю PHP таким уж хорошим языком программирования, проработав очень тесно с ним три с половиной года, то почему я должен говорить, что это отличный язык? Я не испытываю никакой особенной нелюбви к PHP. Он такой, какой он есть. Но тот стиль и те средства разработки, которые он мне предлагает, меня не устраивают.
    А вообще, это очередная религиозная война из разряда Windows vs Linux или Кит vs Слон. А в них я не участвую принципиально.

  5. Макс Лапшин

    2Олег: да, без каких либо личных претензий. Сам переходил с "дремучего php". Это я не к личному наезду, а к тому, что действительно получается так, что если человек начинает понимать, в чем зло процедурного мышления, то они и выбирает что-то отличное от PHP. Более пригодное для практики объектно ориентированного программирования, будь то питон или тот же RoR.

    А религиозной войны никакой и нет. Тут выбирается инструмент под мышление. У меня есть несколько знакомых, которые искренне считают, что для них процедурное программирование более близко и понятно. Как говорится, вперед и с песней :)

    Может просто ваш опыт работы только и позволяет, что каждый месяц скакать с фреймворка на фреймворк и кричать, что предыдущий был плох?

    Если вы собираетесь заниматься фаллометрией, то я на это не настроен. Я услышал ваше мнение и дальше лично мне оно уже не интересно.

  6. jcrow

    2all: где вы берете такой php? мой, знаете, ведет себя совершенно нормально и предсказуемо. и ОО код выполняется так, как-будто и не догадывается о всех тех ужасах с php, про которые вы тут рассказываете. что я делаю не так?..
    такое складывается впечатление, что ведущие разработчики тем более ведущие, чем изысканней смогут обгадить php.

    Иван, Ваш учебник замечателен, и выделение "одного браузера" в отдельную категорию там совершенно уместно и объективно, но организация, часто с вашей подачи, "наездов" на php в комментариях выглядит несерьезно. на вас же дети смотрят и могут сложить неправильное представление...

  7. Иван Сагалаев

    Прошу прощения, но в своей статье не могу отыскать хотя бы какого-то слабого намека на PHP. И честно признаюсь, что даже о нем не думал, когда писал.

    Другое дело, что эта тема все равно будет возникать в комментариях даже и без моего участия. Чтобы ее не было, мне бы пришлось вообще не писать про веб-фреймворки :-).

    Тем не менее, я призываю всех комментировать именно статью, а не просто считать ее отправной точкой для отвлеченной дискуссии :-)

  8. Макс Лапшин

    Касательно темы вопроса, могу вот что добавить.

    Действительно, если, скажем, создавать оффлайновое приложение, которые ходит к базе, то могут возникнуть затруднения.

    Какая структура у рельсов:
    ActiveRecord, ActiveView, ActionWebService, ActionMailer, ActionSupport, ну и контроллер.

    Без ActionSupport-а вообще никто не заведется. Там всевозможные расширения к различным объектам. ActionMailer будет работать через ActionView.

    Соответственно, что бы воспользоваться почтой, надо будет создавать контроллеры. Ну да это и правильно. Какое же десктопное приложение без MVC? Насколько это будет удобно сделать? Не знаю, не пробовал. Т.е. вопрос стоит: насколько удобно выдрать диспетчинг урлов. Хрен знает.

    P.S. Надпись внизу над «Категории» написана юникодными раскоряками.

  9. Дьячук Антон

    цитата на http://www.rubyonrails.org/
    "Ruby on Rails(TM) is an open-source web framework"
    Прошу обратить внимание на слово WEB.

    Не нужно писать приложение под rails только для того чтобы использовать ActiveRecord, свет клином на нем не сошелся.

Добавить комментарий