Подтвердить что ты не робот

Является ли Rails черным ящиком?

В последнее время я делаю несколько простых рельсовых приложений. Я знаю рубин очень хорошо, но когда я начал делать вещи "рельсы", я заметил, что некоторые вещи были сделаны "только потому, что" и "Трудно" для новичков (рельсов) знать, что делает код.

Неужели рельсы пропустили точку и превратились в своего рода язык 4-го поколения? Я имею в виду, что вам нужно сделать кое-что (что вам не нужно понимать), чтобы создать веб-сайты рельсов, а альтернатива - изучить исходный код, чтобы выяснить, что делает.

Я также видел, что люди платили наличными всем, кто мог делать хорошие руководства по рельсам... Мы говорим о структуре, которая ставит простоту в первую очередь, нужно ли платить за хорошие учебники?

Не поймите меня неправильно, я считаю, что рельсы принесли очень хорошие идеи в основное русло (например, соглашение по конфигурации), но имеет это упрощение ( "просто поместите эту строку кода и... она работает!" ) уменьшила простоту рамки пытались достичь?

4b9b3361

Ответ 1

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

Rails действительно предоставляет многие функции promises, хотя он обеспечивает множество функций, которые требуют практически никакой конфигурации. Такие вещи, как ORM, отношения модели и валидация, тривиальны для настройки и оставляют гораздо больше времени для таких вещей, как тонкая настройка логики приложения и фокусировка на дизайне. Код Rails также очень и очень редуцируется. Rails абсолютно позволяет вам делать многое с небольшим кодом.

Где я расстраиваюсь, когда я хочу выйти из проторенного пути. Возможно, мне захочется добиться "очень специфической функциональности X", но я не могу понять, с чего начать. Я нахожу, как глубже проникаю в рамки, тем реже становится информация. Части API плохо документированы. Это заставляет меня полагаться на сторонние плагины, некоторые из которых не имеют документации и не поддерживаются в хорошем состоянии. Я довольно сильно застрял в сообщении в блоге, в котором рассказывал мне, чтобы скопировать этот код или этот код в мое приложение, и все будет работать (к счастью, они обычно делают).

Некоторые из моих проблем могут быть связаны с общей неопытности (все же переход от дизайнера к программисту), но я часто чувствую, что, хотя Rails предоставляет отличные инструменты для создания веб-сайтов, он, по крайней мере, на первый взгляд, не обеспечивает отличные инструменты для создания других инструментов. У этого есть потенциал, но вам действительно нужно глубоко копать.

Ответ 2

Проблема с конфигурацией конфигурации заключается в том, что вам нужно знать соглашение. По крайней мере, с конфигурационным файлом у вас есть что читать, когда вы начинаете... Как только вы знаете соглашение, оно идет намного быстрее, но у вас есть учебный обрыв, чтобы конкурировать с тем временем.

Ответ 3

Является ли Rails черным ящиком?

У Rails есть некоторый "волшебный код", где вы просто пишете то, что говорит учебник, чтобы писать, и материал волшебным образом работает, но это вовсе не черный ящик.

  • По определению "черный ящик" - это то, что вы не можете заглянуть внутрь. Поэтому у вас не может быть проекта с открытым исходным кодом с "черным ящиком". Здесь рельсы 2.1 стабильный исходный код, посмотрите

  • Если вы читаете исходный код, это не ваша вещь, большинство этих "волшебных функций" хорошо документированы и объясняются на многих сайтах и ​​блогах (а если нет, вы всегда можете спросить здесь, а мне 100 % уверен, что вы получите хороший ответ)

  • Помните, что если вы все еще находитесь на этапе обучения, в любом учебнике будет много "просто поместить эту строку кода", потому что они пытаются понять понятия, а не копаться в внутренняя работа всего. Каждая другая структура на планете, а не только рельсы, имеет "волшебство" в своих учебниках.

Ответ 4

Я нашел Rails очень легко работать. Возможно, вы захотите подобрать Agile Web Development с Rails. Это очень помогло мне в обучении "Rails way". Я использовал его скорее как справочник, чем учебник, но он предлагает вам создать приложение и объясняет, что происходит. FWIW, я взял Rails быстрее, чем ASP.NET(который я все еще изучаю), и знание Rails очень помогает в изучении ASP.NET MVC.

Ответ 5

Как ни с чем, я думаю, что Дьявол в деталях. Да, очень легко получить сайт с земли и объединить куски вместе, чтобы сделать что-то, что работает, но для разработки хорошо продуманной и надежной системы требуется более глубокий дизайн и мысли. Очень легко начать принимать плохие решения OO, например, нарушить закон Деметры, потому что все так быстро складывается. Рельсы так просто. Великих рельсов нет.

Ответ 6

Я считаю, что "знаю ваши соглашения" - это не проблема. Я знаю, что если я сделаю X, тогда у меня будет работа. Но что делает Х? Rails кажется мне черным ящиком, и по иронии судьбы, когда речь идет о "конвенции по конфигурации", весь процесс создания Rails-приложения больше похож на конфигурацию, чем программирование.

У меня было это странное исключение некоторое время назад, когда я привел пример Jruby on Rails (Ola Bini)....

CreateProductCategories не пропадает Постоянный ProductType!

Это произошло потому, что версии рельсов были разными, но дело в том, что все в порядке, пока вы не проскользните по золотому пути, а черный ящик больше вам не поможет, и THEN вы понимаете, что понятия не имеете, что вы делали все это время и начинаете просить о помощи в форумах/списке рассылки (а затем вы узнаете, что большинство людей не знают, что они делают или почему, именно так оно и работает).

В любом случае, хорошо знать, что я не сумасшедший, и некоторые люди сталкиваются с такими проблемами. Спасибо всем.

PS: английский не является моим естественным языком, поэтому, если вы найдете грамматические ошибки, отредактируйте их.

Ответ 7

У меня есть некоторые небольшие знания о том, как работают внутренние функции рельсов, и я очень надеюсь, что работа, которую Кац делает для rails 3.0, заставит внутренние элементы рельсов гораздо легче понять и специально документирована. AFAIK, он создает некоторые хорошо определенные интерфейсы среди "модулей/слоев", например, все ORM совместно используют общие интерфейсы, поэтому вы сможете не только заменить ORM, но и легко понять интерфейс, который связывает рельсы и ORM.

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

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

Ответ 8

Я согласен с Брайаном М.

Так много черной магии и жутких вещей, тысячи строк кода, мета-мета-программирования повсюду.

Но, чтобы быть справедливым, Rails мне так сильно понравилась разработка, основанная на спецификации, REST и хорошее понимание Ruby.

Сейчас я нахожусь в точке, где 20% времени является гладким, а остальные 80% я трачу на борьбу с соглашениями Rails. Я чувствую себя намного более продуктивно, когда пишу чистый Ruby.

В какой-то момент Merb казался опцией, следующий проект, который я собираюсь с Rack/Sinatra и CouchDB.

Ответ 9

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