Это из опыта обучения, продолжения обучения и написания относительно простого приложения на Rails.
1) Кривая обучения
Rails обманчиво прост. Все учебные пособия, видео и книги демонстрируют, как быстро вы можете получить работающее (хотя и некрасивое) приложение, но на самом деле это просто царапина. Они имеют тенденцию в значительной степени полагаться на генерацию кода и «строительные леса», которые, по общему признанию, являются хорошим инструментом при обучении, но быстро изживают его полезность.
Не заблуждайтесь, Rails сложно освоить. Как только вы пройдете самые основы (подробнее об этом позже), вы будете стремительно бегать в стену, если вам нужно сделать больше, чем чрезвычайно упрощенную функциональность «демо-приложения», которую вы видите рекламируемой. Вы можете получить базовые знания по Ruby во время обучения, но вам нужно быстро освоить Ruby, иначе вы останетесь безучастными (и не очень хорошими DRY
), если вам нужно выйти за пределы ограничений Rails.
Rails, как я люблю называть это любовью, рисует программирование чисел . Если вы придерживаетесь 100% соглашений (то есть придерживаетесь линий и используете цвета, которые вам говорят), вы можете быстро и легко создавать достойные приложения. Если и когда вам придется отклониться, Rails может перейти от вашего лучшего друга к вашему злейшему врагу.
2) Когда все, что у тебя есть, это молот ...
Rails очень хорошо делает упрощенные CRUD-приложения. Проблема возникает, когда ваше приложение должно делать больше, чем просто чтение / запись из базы данных. Теперь, для записи, последняя версия Rails, которую я использовал, была 2.3.4, так что с тех пор все могло измениться, но я столкнулся с серьезными проблемами, когда изменились бизнес-требования, поэтому приложение должно было иметь небольшую систему рабочего процесса и интегрироваться с устаревшее PHP-приложение. Соглашение Rails «одна форма, одна модель» прекрасно работает для тривиальных приложений и приложений ввода данных, но не так много, когда вам нужно выполнить логику обработки, или иметь рабочие процессы, или что-то, что не является типичным «Пользователь вводит данные в несколько текстовых полей, нажмите «Отправить». Это может быть сделано, но это ни в коем случае не "легко", или, скорее, не было
Кроме того, Rails не любит хорошо играть с другими приложениями, которые не используют свои предпочтительные методы доступа к данным; если вам приходится взаимодействовать с приложением, у которого нет API в стиле «Web 2.0», вам придется работать с Rails, а не с ним; Я снова говорю из опыта здесь, как это то, что случилось со мной.
3) это ново
Наконец, Rails по-прежнему остается «новым ребенком на блоке» во многих областях. Это не имеет значения для личного использования или для сценариев типа «я думаю, что это круто и я хочу изучать это», но выступаю как человек, который предпочел бы использовать Rails на моей повседневной работе, если вы не находитесь в месте, где находится Rails Широко распространено, может быть очень трудно найти полную занятость как разработчик Rails. Это по-прежнему в значительной степени область "модных, новых стартапов" и не крупный игрок в большинстве мегаполисов. Ваш пробег может варьироваться в этом отношении, но я знаю, что в моем районе (Тампа) Rails практически не существует.
4) Огонь и Движение
Рельсы постоянно меняются. Это и хорошо, и плохо; это хорошо, потому что сообщество развивается и принимает новые концепции. Это плохо, потому что сообщество развивается и принимает новые концепции. Это может быть очень подавляющим для новичка в Rails, потому что, как правило, когда вы сталкиваетесь с проблемой и осматриваетесь, вы увидите, что люди рекомендуют такой-то и такой-то драгоценный камень, чтобы исправить ее, или говорят, что это плохо в любом случае, и вы не должны Если использовать его, вот лучший способ ... и вы получите список дополнительных инструментов для изучения вместе с Rails, чтобы не отставать от Rails cognoscenti. Такие вещи, как Git
, и рог изобилия других вещей все плавают вокруг и выдвигаются как «правильный способ сделать вещи» в Rails-Land,BDD/RSpec
, Cucumber
,Haml/Sass
к тому же к Rails, потому что использование стандартного инструментария Rails кажется «неправильным».
Теперь это еще больше усугубляется Rails 3.1, что делает Sass и CoffeeScript всеми вещами по умолчанию, поэтому новичок в Rails должен не только изучать Ruby и Rails, но и Sass (возможно, простой, если вы знаете CSS) и CoffeeScript (не безумно сложно, но, безусловно, достаточно отличается от исходного JavaScript) как минимум, чтобы начать, плюс можно предположить, Git. Даже без учета RSpec и друзей, а также дюжины или более драгоценных камней, которые вы обычно получите, это 4 разные вещи, которые вы должны выучить, прежде чем вы сможете серьезно начать писать приложения на Rails. Сравните это с языком, таким как C #, Java или даже PHP, где ваши знания HTML / CSS / JavaScript / SQL не изменятся, и вам просто нужно изучить сам язык и, возможно, нюансы инфраструктуры.