Два с половиной года назад я познакомился с замечательным ruby-фреймворком Ruby-On-Rails. Часто слышу вопросы о том, в чем же его преимущества. Я попробую изложить свои мысли по этому поводу, которые возникли у меня за это время. Правда сразу придется оговориться, что пересел я на него с php-фреймворка Kohana. Если бы я пересел скажем с Symfony, то ощущения были бы, возможно, уже не такие.
После Коханы мир Рельсов показался весьма удивительным. Да был трудный и долгий старт, но после этого я ощутил, что попал в будущее. Настолько был велик разрыв.
Практически на каждую типовую задачу я мог найти готовый гем (компонент), который добавлялся в проект одной-двумя строками в конфигурационный файл (Gemfile).
К примеру, понадобилась вам в приложении возможность аутентификации пользователя – 2 строки в Gemfile, несколько строк, уточняющих поведение самого гема, и аутентификация пользователей у вас работает. Причем это будет довольно развитая система аутентификации с возможностью регистрации, логина, восстановления доступа, защитой от подбора пароля и т.п.
Трудно представить сколько времени понадобилось бы нам, чтобы реализовать, отладить и написать тесты для такой вещи самостоятельно.
Многие типовые задачи можно решить в Ruby On Rails так же легко. Паггинация, админка, локальная работа с почтой, работа с древовидными структурами, формирование человекопонятных URL, капча, создание скриптов-демонов, обработка загружаемых изображений – вот лишь небольшой список того, что имеется. И все это, к тому же, легко подключается.
Второе, что мне очень понравилось – это консоль Rails. Стоит в консоли выполнить команду rails console, как вы попадаете в режим интерактивного ввода кода. Это режим очень удобен, если вы хотите что-то проверить (какой-то маленький кусочек кода) и получить результат. Без создания нового контроллера, файлов представлений и тому подобного. Причем в консоли вам доступно все, что есть в вашем проекте (например, модели). Вы получаете полностью работоспособное и реальное окружение.
На этом конечно преимущества RoR не кончаются. В этом фреймворке предусмотрено многое и у всего есть свое место. Есть свои стандартные папки и решения для хранения переводов (для мультиязычного сайта), тестов, данных для тестов (фикстур и фабрик), описаний имейлов (мейлеров), валидаторов и прочего. У всего всего есть свой укромный уголок и элегантная реализация.
Но конечно время не стоит на месте. И в мире php за эти два с лишним года многое изменилось. Он стал лучше и удобнее. Появился composer – некий аналог тех же гемов. Есть и возможность поднять некое подобие консоли rails, только для php-проекта. Правда это не будет работать из коробки. Придется поплясать с бубнами, но все же сдвиги весьма и весьма положительные. Уже сейчас в php имеется многое из того, что есть в рельсах. На мой взгляд, все это не так тесно интегрировано друг с другом, но жить становится явно проще.
Мои выводы. Мир Ruby On Rails весьма интересен и перспективен, но пока что у заказчиков в вебе преобладают потребности в php-разработчиках. По технологичности php находится как бы в роли догоняющего, а по востребованности ruby находится в этой роли. Скорее всего уделять время лучше и тому и другому. Будущее обещает быть интересным…