Является ли Rails черным ящиком? - PullRequest
19 голосов
/ 12 ноября 2008

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

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

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

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

Ответы [ 9 ]

23 голосов
/ 12 ноября 2008

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

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

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

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

10 голосов
/ 12 ноября 2008

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

9 голосов
/ 12 ноября 2008

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

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

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

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

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

4 голосов
/ 12 ноября 2008

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

4 голосов
/ 12 ноября 2008

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

3 голосов
/ 12 ноября 2008

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

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

CreateProductCategories не отсутствует постоянный ProductType!

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

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

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

2 голосов
/ 09 ноября 2009

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

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

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

1 голос
/ 26 мая 2009

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

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

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

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

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

0 голосов
/ 12 ноября 2008

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

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