Чуть больше месяца назад я пересел с PHP на Ruby. Теперь хочу как-то резюмировать этот небольшой опыт и попытаться сформулировать плюсы и минусы.
Первое, что пришлось прочитать — это Agile Web Development with Rails. Книжка почитается за библию, но на мой вкус она показалась не самой удачной. Хотя, пожалуй, главной ее проблемой является устарелость. Основная учебная задача книги — создание магазина. В основе лежат какие-то рельсы из серии 1.X.X (точно не помню), что во времена 2.X.X достаточно неактуально. И дело ведь не в том, что мне трудно откатиться на старую версию, а скорее в том, что мне абсолютно не хотелось разбираться в устарелом подходе.
К счастью, все желающие могут посмотреть скринкасты Бала Паранжа на тему создания учебного магазина Depot на рельсах 2.1.1. Кроме того у него неплохие скринкасты и на многие другие рельсовые актуальные темы.
Собственно с руби я знакомился по двум вещам:
— прекрасная штука TryRuby, о которой тут уже писали
— увлекательный комикс Why's — неоднозначно принимаемая сообществом книга, которая мне очень понравилась.
Ну и на десерт — самое главное пособие (для меня) по руби и рельсам — это скринкасты Райана Бэйтса. Пожалуй одних этих скринкастов (для начала хватит и 20) хватит чтобы оценить и понять рельсы.
К сожалению все вышеперечисленное (кроме AWDR, которое существует в переводе) на английском. Но мне кажется это только к лучшему — отличная ежедневная практика никому не помешает.
С этим оказалось все очень хорошо. Гугл группа RubyOnRails to russian — прекрасное место для решения любого вопроса [там мне давали ответы на все даже самые нубские вопросы не повышая тона, спасибо Max Lapshin ;) ]. В целом его приятно читать — много полезного узнаешь читая соседние топики. Утро понедельника у меня начинается с просмотра нового скринкаста Райана Бейтса, в остальные дни с чтения гугл группы ). В целом в гугл группах насчитывается более 1000 участников. При этом самые маститые гуру там не кичатса отвечать чуть ли не на все вопросы.
Сам язык произвел на меня впечатление, словно я пересел с жигулей на что-то с автоматической корбкой, комфортным салоном и все в таком духе. Руби оказался невероятно эротичным ;) языком. Параллельно мне приходилось закругляться с одним ПХП проектом и с каждым днем я все чувствительнее чувствовал провал между ПХП и Руби. Julik давно еще писал: PHP-код никогда не будет таким элегантным (просто потому что дизайн отсутствует).
Всегда можно написать на PHP то же, что и на Ruby — возможно даже за то же количество строк :), но вряд ли это будет столь же изящно.
Я никогда не работал с фреймворками в ПХП — поэтому мне и не с чем сравнивать. В любом случае, с рельсами очень приятно работать. Особенно я писаю кипятком от организации отношений вроде has_many и прочих. Ну и работа с базой данных тоже вызывает бурю эмоций первое время.
Что тревожит:
— та кипа файлов, которая уже имеется в проекте (и это только начало).
— хочется как-то проще перемещаться по структуре приложения. Это, конечно, проблема IDE, но хотелось бы нажатием пары клавиш очутиться в соответствующем контроллере из модели, или из метода контроллера в его представление. В TextMate и E этого нету =(
— все твердят о тормозах рельсов — я пока не смог оценить, но подсознательно ожидаю.
Ну а в целом MVC шаблон сам по себе очень организует работу и очень четко соответствует заявленной гибкости разработки. Сколько я не пытался проектировать приложения по типу MVC (как на actionscript, так и на ПХП), то в итоге из-за лени и из-за каких-то ошибок получалась вполне себе каша отдаленно напоминающая упомянутый шаблон. Он, конечно, не панацея — но определенно лучше хаотичного подхода.
Кроме того, в рельсах есть большой набор плагинов (ну и возможность заворачивать свои) — этот подход меня вдохновляет много больше, чем стандартная библиотека ПХП, которую я все время писал дописывал и инклюдил =). Кроме того набор готовых плагинов достаточно обширен и спасает много времени.
Git лучше subversion *)
Не то, чтобы Ruby лучше всех — просто на нем приятнее разговаривать
Все начинается со знакомства
Первое, что пришлось прочитать — это Agile Web Development with Rails. Книжка почитается за библию, но на мой вкус она показалась не самой удачной. Хотя, пожалуй, главной ее проблемой является устарелость. Основная учебная задача книги — создание магазина. В основе лежат какие-то рельсы из серии 1.X.X (точно не помню), что во времена 2.X.X достаточно неактуально. И дело ведь не в том, что мне трудно откатиться на старую версию, а скорее в том, что мне абсолютно не хотелось разбираться в устарелом подходе.
К счастью, все желающие могут посмотреть скринкасты Бала Паранжа на тему создания учебного магазина Depot на рельсах 2.1.1. Кроме того у него неплохие скринкасты и на многие другие рельсовые актуальные темы.
Собственно с руби я знакомился по двум вещам:
— прекрасная штука TryRuby, о которой тут уже писали
— увлекательный комикс Why's — неоднозначно принимаемая сообществом книга, которая мне очень понравилась.
Ну и на десерт — самое главное пособие (для меня) по руби и рельсам — это скринкасты Райана Бэйтса. Пожалуй одних этих скринкастов (для начала хватит и 20) хватит чтобы оценить и понять рельсы.
К сожалению все вышеперечисленное (кроме AWDR, которое существует в переводе) на английском. Но мне кажется это только к лучшему — отличная ежедневная практика никому не помешает.
Сообщество
С этим оказалось все очень хорошо. Гугл группа RubyOnRails to russian — прекрасное место для решения любого вопроса [там мне давали ответы на все даже самые нубские вопросы не повышая тона, спасибо Max Lapshin ;) ]. В целом его приятно читать — много полезного узнаешь читая соседние топики. Утро понедельника у меня начинается с просмотра нового скринкаста Райана Бейтса, в остальные дни с чтения гугл группы ). В целом в гугл группах насчитывается более 1000 участников. При этом самые маститые гуру там не кичатса отвечать чуть ли не на все вопросы.
Язык Ruby
Сам язык произвел на меня впечатление, словно я пересел с жигулей на что-то с автоматической корбкой, комфортным салоном и все в таком духе. Руби оказался невероятно эротичным ;) языком. Параллельно мне приходилось закругляться с одним ПХП проектом и с каждым днем я все чувствительнее чувствовал провал между ПХП и Руби. Julik давно еще писал: PHP-код никогда не будет таким элегантным (просто потому что дизайн отсутствует).
Всегда можно написать на PHP то же, что и на Ruby — возможно даже за то же количество строк :), но вряд ли это будет столь же изящно.
Rails
Я никогда не работал с фреймворками в ПХП — поэтому мне и не с чем сравнивать. В любом случае, с рельсами очень приятно работать. Особенно я писаю кипятком от организации отношений вроде has_many и прочих. Ну и работа с базой данных тоже вызывает бурю эмоций первое время.
Что тревожит:
— та кипа файлов, которая уже имеется в проекте (и это только начало).
— хочется как-то проще перемещаться по структуре приложения. Это, конечно, проблема IDE, но хотелось бы нажатием пары клавиш очутиться в соответствующем контроллере из модели, или из метода контроллера в его представление. В TextMate и E этого нету =(
— все твердят о тормозах рельсов — я пока не смог оценить, но подсознательно ожидаю.
Ну а в целом MVC шаблон сам по себе очень организует работу и очень четко соответствует заявленной гибкости разработки. Сколько я не пытался проектировать приложения по типу MVC (как на actionscript, так и на ПХП), то в итоге из-за лени и из-за каких-то ошибок получалась вполне себе каша отдаленно напоминающая упомянутый шаблон. Он, конечно, не панацея — но определенно лучше хаотичного подхода.
Кроме того, в рельсах есть большой набор плагинов (ну и возможность заворачивать свои) — этот подход меня вдохновляет много больше, чем стандартная библиотека ПХП, которую я все время писал дописывал и инклюдил =). Кроме того набор готовых плагинов достаточно обширен и спасает много времени.
Холивар
Git лучше subversion *)
На конец
Не то, чтобы Ruby лучше всех — просто на нем приятнее разговаривать