Каковы недостатки RoR? [закрыто]

39

В настоящее время я пытаюсь решить, какой язык на стороне сервера изучать и использовать для веб-разработки, и хотя относительно легко получить информацию о том, почему x, y или z - хорошая вещь, сложнее определить недостатки каждой из них. их.

В частности, мне любопытно, какие есть недостатки в изучении и / или использовании Ruby on Rails по сравнению с любым другим языком / фреймворком.

maxfielden
источник
5
Это заставило меня ненавидеть ASP.NET, много. Что было проблемой, так как это была моя дневная работа.
Джереми
5
Просто упомянув об этом в комментарии, на тот случай, если другие захотят это уточнить, но одна вещь, которая одновременно является плюсом и минусом, заключается в том, что RoR временами может быть слишком «волшебным» - иногда бывает трудно понять, что происходит за этим. сцены (и поэтому, если вы новичок в веб-разработке, вы будете принимать многие вещи как должное). Конечно, это в основном верно для всех языков высокого уровня, и это также делает их более легкими и быстрыми в работе.
Граутур
1
Если вы смотрите на RoR, определенно посмотрите на ASP.NET MVC3 с Razor. И, честно говоря, если вам нравится получать деньги (я уверен, что это так), это 40% причин, по которым я разрабатываю в ASP.NET. Остальные 60% - я считаю, что это лучший период веб-платформы, даже если у него есть свои болевые точки, которые почти все были окончательно завершены с помощью Nuget.
Думайте о RoR как о инструменте для приложений CRUD, вы можете делать с ним другие вещи, но для более общих вещей другие языки / структуры более гибки, не создавая путаницы.
alfa64

Ответы:

59

Исходя из опыта: недостатком является то, что вы слишком сильно полагаетесь на среду Rails . Это замечательно и замечательно, если вы когда-нибудь пишете простые, простые в использовании приложения CRUD, которые попадают прямо в «сладкое пятно» Rails; Ваша производительность будет стремительно расти. Однако в тот момент, когда вам нужно что-то сделать за пределами этого приятного места - взаимодействовать с существующей базой данных, общаться с другим приложением, для которого не определен JSON или XML API, реализовать сложный рабочий процесс, Rails станет вашим врагом. это являетсяможно делать это с помощью Rails, но это идет "вразрез", так что вы в основном сами решаете, как это сделать, поскольку сообщество обычно просто отвечает: "Не делайте этого, это не Rails путь "- это приводит либо к потере производительности, либо к очень грязному коду, так как вам в основном приходится взламывать фреймворк Rails.

Кроме того, есть невысказанный недостаток: все остальное покажется уродливым и грязным. Как только вы попробуете сладкий, сладкий нектар Rails (хорошо, проповедуйте немного здесь ...), все остальное помои. Переход от Rails к PHP, или к ASP.NET WebForms, или к Java - это все равно, что ходить по гвоздям после резвых прогулок в пышном саду; вы не увидите другие языки / фреймворки в таком же свете, и, хотя вы все еще можете их ценить, вы втайне жаждете любящих объятий Rails.

Уэйн Молина
источник
11
Похоже на любую другую структуру - в тот момент, когда вам нужно что-то из коробки, это становится борьбой.
Неманя Трифунович
12
Да, но я обнаружил, что с Rails все немного хуже, потому что весь фреймворк построен на идее, что у вас никогда не будет причин нуждаться в чем-то «из коробки». Сравните это с Zend для PHP, ASP.NET MVC или Django для Python, и они намного более гибкие, чем Rails, и при этом дают преимущества фреймворка. Это не совсем удар против Rails, хотя.
Уэйн Молина
3
Но, к счастью, RoR - не единственная веб-платформа на основе Ruby. Я сам предпочитаю Sinatra + Datamapper + Haml / Sass или, альтернативно, Sinatra + Sequel + Sequel + Haml / Sass для опыта работы с сырым SQL ... RoR отлично подходит по сравнению с решениями на основе Java. Oder. Но это тяжелый монстр по сравнению с другими основанными на Ruby веб-фреймворками.
Филипп
4
Мне трудно определить, любит ли Уэйн RoR или нет. Эти отношения любви / ненависти распространены среди большинства разработчиков RoR?
Фил
2
@Phil немного из столбца A, немного из столбца B. Я люблю RoR, хотя на самом деле я не знаю много об этом; Я продолжаю пытаться учиться этому, потому что это действительно приятно. Но, с другой стороны, я использовал его в приложении «реального мира», и он укусил меня за задницу, когда мне пришлось выйти за рамки приложения CRUD, которое общается с одной базой данных с 1-2 моделями на форму, и это было все.
Уэйн Молина
30

Для вашего первого языка на стороне сервера, я чувствую, что с RoR могут возникнуть проблемы:

  1. Вы не просто изучаете язык, вы изучаете основы. Я бы определенно потратил некоторое время, чтобы поиграть с простым старым рубином, прежде чем прыгнуть в рельсы.

  2. Так как это фреймворк, и при этом «самоуверенный», я чувствую, что он даст вам очень ограниченный охват того, что происходит в фреймворке.

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

GSto
источник
15

Я пытался изучить RoR несколько раз, и моя самая большая проблема - всегда пытаться заставить пакеты работать правильно и документацию. Проблема с документацией заключается в том, что она всегда кажется устаревшей (или очень простой). Я получил основы с сайта, но кроме этого все выглядело устаревшим (даже книга, которую я купил и в итоге вернулась). Другим недостатком могут быть зависимости, которые есть у некоторых библиотек, и то, как они могут конфликтовать с другими, как заявил Бен Коу .


Что-то, о чем я подумал позже, и вместо того, чтобы сделать это комментарием, я просто отредактирую свой ответ так: у RoR есть шанс испортить Ruby для вас. Я знаю, когда я попробовал это, это заставило меня думать, что "Руби был глуп". Затем, спустя несколько месяцев, я решил попробовать Ruby и полюбил язык. Именно это заставило меня ненавидеть язык. Я не особо увлекался этим, но когда мне это нравилось, я действительно наслаждался Синатрой . Я думаю, что я получил радость, что большинство людей выходят из RoR из Синатры.

Jetti
источник
+1 У меня был такой же опыт. Я пытался выучить Ruby on Rails, но получил ошибку просто так rake db:migrate. С другой стороны, я обнаружил, что Синатра намного проще и понятнее. Во всяком случае, я предпочитаю все настраивать по-своему, и базовая структура приложения rails мне показалась слишком сложной.
Чжэхао Мао
@ Чжехао Мао - я рад видеть, что я не единственный, кто имеет такой опыт. Хотя я не думаю, что это сложно ... до тех пор, пока вы думаете точно так же, как DHH. Если у вас другой тип мыслительного процесса, RoR может быть болью в тылу.
Джетти
Я думаю, это не так сложно. Я полагаю, что моя проблема заключалась в том, что каждый раз, когда я пытался создать приложение rails, из коробки ничего не получалось, как указано в документации.
Чжэхао Мао
Я нашел это невероятно сложным из-за этого факта. Вот почему я сдался. Для того, чтобы он был РАД, он должен работать. Честно говоря, я думаю, что мог бы сделать приложение CRUD на C ++ быстрее, чем RoR, из-за всех проблем, с которыми я сталкивался при запуске и запуске RoR (немного преувеличения, но все же ...)
Jetti
Я не уверен, что вы, ребята, читали правильные документы или почему вы не просили о помощи ...
sevenseacat
12

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

Я работаю с RoR и ASP.NET ежедневно, но, как ни странно, я предпочитаю мир ASP.NET, но это больше связано с личной философией, чем с языком или самой архитектурой. (Я немного ненормальный, и я тяготею к строго типизированным языкам).

Независимо от того, я говорю, попробуй. RoR - отличная среда для работы, но прежде чем перейти непосредственно к Rails, освоитесь с Ruby в качестве языка. Помимо веб-приложений, Ruby - это довольно крутой язык сценариев, если вам придется управлять * nix-боксом и он может сэкономить вам массу времени.

Marlon
источник
4
+1 за контроль урода. У меня есть немного этой серии тоже. Не только для сильного типа, но также - я на самом деле в некотором роде похож на конфигурацию (несмотря на многословие), а не на условности, делающие предположения для меня.
Бобби Столы
То же самое, @Bobby Tables!
Марлон
6

Как человек, который недавно изучил Rails (в качестве хобби - никогда не использовал его для разработки коммерческих классов) и уже работал в JEE и ASP.NET, ответ Уэйна М оказался очень верным.

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

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

Хотя я думаю, что эта проблема, вероятно, не будет такой плохой, если у вас будет гораздо больше опыта работы с Rails. Я определенно вижу, что это проблема для кого-то, кто пришел из старой разработки Java / .NET, кто привык к очень подробному потоку конфигурации - и привык полагаться на то, что где-то все прописано.

Бобби Столы
источник
1
Поначалу меня это немного беспокоило, но потом уже не было. Было замечательно иметь возможность написать миграцию базы данных для создания новых столбцов, а затем присоединить бизнес-логику к новым данным без отдельного шага сопоставления.
Кевин Клайн
@kevincline Как это сделать в RoR? Вы можете сделать это с помощью AOP в мире Java и .NET.
раздавить
@crush: Это больно в Java и .NET, потому что вы должны явно создавать и отображать свойства в сопоставленном классе для каждого столбца в базе данных, которую использует бизнес-логика. Добавление столбца означает изменение нескольких классов. RoR делает все это во время выполнения по соглашению. Вы изменяете схему базы данных, затем просто меняете бизнес-логику и уровень представления, чтобы использовать новый столбец.
Кевин Клайн
5

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

Ruby on Rails - хороший выбор для начала - здесь есть хорошее сообщество, множество документации и хорошие учебные пособия. Но не забывайте об альтернативах, особенно если вы начинаете больше заниматься веб-разработкой. RoR может быть излишним для некоторых проблем, неадекватным решением для других и лучшим выбором для другого набора. Знайте, что это сильные и слабые стороны, и как использовать инструмент.

Томас Оуэнс
источник
4

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

Еще одна вещь, чтобы сделать, это купить книги. Учебные пособия по Интернету не влияют на мой опыт; они также оставляют много места открытым для отвлечения внимания. Когда у вас есть книга, издатели должны убедиться, что она обеспечивает ценность, поскольку они потеряют деньги, если она получит плохие отзывы. Потратив немного денег, вы сэкономите много времени.

спенсер
источник
Но не забывайте о railscasts.com. Он делает выдающуюся работу, давая вам обзор темы / концепции примерно за 10 минут. Я помню, как проводил целые выходные, пытаясь заставить Sunspot работать, а затем посмотрел 10-минутный Railscast о том, как реализовать граненый поиск, и запустил его менее чем за час. ХОРОШО стоит $ 9 / месяц.
Кайл Карлсон
1

Я, честно говоря, не могу понять тех, кто поэтично рассказывает о том, что такое прогулка по саду Ruby-on-Rails. Я пришел к этому как опытный разработчик ASP.NET-MVC, Java, PHP, Python - и обнаружил, что это самая ужасная трата времени! 90 процентов онлайн-ответов Google являются неправильными или неполными. Зачем? Изменилось ли так много каждый год? Или же никто не заботится о том, чтобы код действительно работал? Мне потребовалось огромное количество времени, чтобы просто делать простые вещи; далеко, намного больше, чем это заняло бы меня в C # / ASP.NET-MVC, например. Конечно, мне никогда не удавалось так долго изучать мои оригинальные технологии. Конечно, ROR - это кратко. Если это важно для вас. Но я редко обнаруживал, как создать код, который бы выполнял задачу. Лично я предпочел бы набрать на клавиатуре в течение 20 секунд, чтобы написать код, который определенно работает, ясно, и вы можете следовать ему, а не набирать краткий код Ruby в течение 2 секунд, но это никогда не работает, пока я не буду всю ночь искать какой-то способ заставить его работать. Это ужасная вонючая куча додо. Зачем? Является ли этот код с открытым исходным кодом (как в бесплатном) не стимулирующим делать его качественным инструментом? Слишком много сценаристов, качающих в него ревизии и модули и плохую документацию? Я не знаю. Но когда я наконец смог уйти от первого проекта Ruby-Rails, я поклялся, что больше никогда не попаду в этот беспорядок! не дает никаких стимулов, чтобы сделать его качественным инструментом? Слишком много сценаристов, качающих в него ревизии и модули и плохую документацию? Я не знаю. Но когда я наконец смог уйти от первого проекта Ruby-Rails, я поклялся, что больше никогда не попаду в этот беспорядок! не дает никаких стимулов, чтобы сделать его качественным инструментом? Слишком много сценаристов, качающих в него ревизии и модули и плохую документацию? Я не знаю. Но когда я наконец смог уйти от первого проекта Ruby-Rails, я поклялся, что больше никогда не попаду в этот беспорядок!

Джеймс Херст
источник
этот пост довольно трудно читать (стена текста). Не могли бы вы изменить его в лучшую форму?
комнат
Этот ответ смешной. Rails, безусловно, объективно экономит время. Вы обижены на это просто потому, что вы новичок в этом и ожидаете, что все заскочит в течение первых нескольких недель. Одной лишь миграции баз данных стоит перейти на Rails.
sergserg
0

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

Это показывает относительную популярность языков, связанных с сетью, на основе поиска объявлений о вакансиях в Интернете.

Телис Дювуар
источник
0

Я согласен с некоторыми из приведенных выше ответов о RoR, я разрабатывал приложения с RoR в течение последних двух лет. Это действительно хорошо с простыми приложениями, операции CRUD (Create, Read, Update и Delete) работают очень хорошо, это благо для разработки простых приложений, но также является его ограничением. Хотя есть много драгоценных камней, предлагает различные преимущества и простоту использования, в основном это так. Если вы выйдете из коробки, вы получите все приложения.

Если вы большая команда, работающая над приложением, использующим RoR, с трудовым делегированием может быть сложно сойти с рук.

Прашант Пендурти
источник
Время от времени меня удивляло то, что многие драгоценные камни, которые, казалось бы, не зависят от RoR, могут использоваться только с RoR, а не в автономном режиме. Очень любопытно, почему это так. PS: я не программист на Ruby, поэтому у меня могло сложиться неправильное впечатление. Но я наткнулся на это несколько раз. К сожалению, у меня нет примеров на данный момент .
Htbaa