Ruby

индекс
128,98

Ruby on Rails. Итоги первого месяца

Чуть больше месяца назад я пересел с 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 участников. При этом самые маститые гуру там не кичатса отвечать чуть ли не на все вопросы.

Язык Ruby


Сам язык произвел на меня впечатление, словно я пересел с жигулей на что-то с автоматической корбкой, комфортным салоном и все в таком духе. Руби оказался невероятно эротичным ;) языком. Параллельно мне приходилось закругляться с одним ПХП проектом и с каждым днем я все чувствительнее чувствовал провал между ПХП и Руби. Julik давно еще писал: PHP-код никогда не будет таким элегантным (просто потому что дизайн отсутствует).

Всегда можно написать на PHP то же, что и на Ruby — возможно даже за то же количество строк :), но вряд ли это будет столь же изящно.

Rails


Я никогда не работал с фреймворками в ПХП — поэтому мне и не с чем сравнивать. В любом случае, с рельсами очень приятно работать. Особенно я писаю кипятком от организации отношений вроде has_many и прочих. Ну и работа с базой данных тоже вызывает бурю эмоций первое время.

Что тревожит:
— та кипа файлов, которая уже имеется в проекте (и это только начало).
— хочется как-то проще перемещаться по структуре приложения. Это, конечно, проблема IDE, но хотелось бы нажатием пары клавиш очутиться в соответствующем контроллере из модели, или из метода контроллера в его представление. В TextMate и E этого нету =(
— все твердят о тормозах рельсов — я пока не смог оценить, но подсознательно ожидаю.

Ну а в целом MVC шаблон сам по себе очень организует работу и очень четко соответствует заявленной гибкости разработки. Сколько я не пытался проектировать приложения по типу MVC (как на actionscript, так и на ПХП), то в итоге из-за лени и из-за каких-то ошибок получалась вполне себе каша отдаленно напоминающая упомянутый шаблон. Он, конечно, не панацея — но определенно лучше хаотичного подхода.

Кроме того, в рельсах есть большой набор плагинов (ну и возможность заворачивать свои) — этот подход меня вдохновляет много больше, чем стандартная библиотека ПХП, которую я все время писал дописывал и инклюдил =). Кроме того набор готовых плагинов достаточно обширен и спасает много времени.

Холивар


Git лучше subversion *)

На конец


Не то, чтобы Ruby лучше всех — просто на нем приятнее разговаривать
_________
Текст подготовлен в ХабраРедакторе
+63
20 ноября 2008, 13:41
68

комментарии (145)

+5
Denis_in_ua #
Основная учебная задача книги — создание магазина. В основе лежат какие-то рельсы из серии 1.X.X (точно не помню), что во времена 2.X.X достаточно неактуально.


Есть бета версия третьего издания этой книги, там речь идет как раз о 2.x.x.
Рекомендую.
0
EvilFaeton #
Подскажите, где смотреть? Что-то туплю — не могу найти.
0
EvilFaeton #
0
paco #
так она там за деньги…
+25
G_Z #
При Путине такого не было! ©
+4
LimeOrange #
Не такие уж и большие деньги, на самом деле, за такую книгу.
650р., PDF-формат. Купил, доволен, читаю, чего и вам рекомендую. :)
0
dr0fnax #
И главное, при внесении свежих поправок можно тут же скачать обновленную версию в PDF
+6
edelweard #
Есть на демоноиде.
0
edelweard #
Поясните, пожалуйста, чем так плох этот коммент? Товарищ дал ссылку на книгу, другого не устроило то, что книга платная. Я указал ресурс, на котором она есть бесплатно.
Просто интересно ;)
–7
fl00r #
Уау! Это круто =), но уже не актуально
+1
edelweard #
Бета мне совсем не понравилась. Это не бета, а альфа максимум. Там очень мало изменений. Ждём полноценной версии.
+9
walker #
>Чуть больше месяца назад я пересел с PHP на Ruby.
> я все чувствительнее чувствовал провал между ПХП и Руби

>Я никогда не работал с фреймворками в ПХП — поэтому мне и не с чем сравнивать
> этот подход меня вдохновляет много больше, чем стандартная библиотека ПХП

вам не кажется, что вы сравниваете теплое с мягким?
как можно сравнивать чистый ПХП с тяжелым MVC фреймворком?

сначала вы говорите о Ruby, но я почему-то уверен, что вы писали только именно на рельсах, а не на чистом руби.
+2
fl00r #
да, я работаю в Рельсах. Но где кончается руби и начинаются релься? 80% кода ведь — это чистый руби. Сравнивая ПХП и Руби я сравниваю только стиль, эстетику, лаконичность яыка. мощность пхп и руби сравнивать глупо. также как сравнивать рельсы и пхп (хотя, можно провести анализ Симфонии или чего другого с Рельсами)
0
Rusan #
если уж сравнивать то Рельсы надо с печенькой (CakePHP) сравнивать.
0
mihailt #
не, не, не. С кейком не надо, ибо он с оглядкой на рельсы создовался ))
0
ognevsky #
ну симфони с его автоматизацией — с еще бОльшей оглядкой =)
+9
Barman #
у меня очень схожие ощущения были, когда я с PHP перешел на Django
+5
fl00r #
Кстати, один из минусов моего пхп прошлого было нежелание ничего слышать о других языках. Ведь я мог «все что угодно слепить на пхп»! А теперь у меня активно проснулся интерес к питону, лиспу и прочим языкам
+2
Barman #
согласен, хотя у меня немного другая история — я «не хотел слышать» про другие «скриптовые» языки (перл, руби, питон) — Ведь я мог «все что угодно слепить на пхп»! даже не то что не хотел слышать — я в общем-то подозревал, что пхп не идеал — просто было тупо лень
+2
edelweard #
Я тоже в восторге от Ruby и Ruby On Rails.
Хотел бы порекомендовать очень хорошее руководство на самОм офф-сайте: guides.rubyonrails.org/
Я начинал с него + Agile Web Development (естественно, адаптируя его на ходу под 2.1).

«тревожит та кипа файлов, которая уже имеется в проекте (и это только начало).»
1. Это вполне естественно для фреймворка.
2. Увеличиваться это количество будет только вашими усилиями.
3. Лучше больше лаконичных файлов, чем всё в одну кучу.

Кстати, если бы вы поработали с каким-либо PHP-фреймворком, думаю, Rails всё равно вас впечатлил бы. По крайней мере, так было со мной.
+3
green_mouse #
ТекстМейт замечательно умеет прыгать в нужный конроллер из модели и на оборот. Возможно вам нужно обновить свой раилс бандл.
0
edelweard #
Правда умеет? Это круто. Надо будет попробовать, спасибо за наводку.
+1
green_mouse #
Правда правда :). Еще рекомедую обрать внимание на бандл RubyAmp очень облегчает жизнь его способность прыгать на оределение метода или класса.
0
edelweard #
Хотя в принципе лично я вполне комфортно чувствую себя с обычной навигацией по файлам (по Cmd+T): учитывая «convention over configuration» всегда знаешь, где что лежит и как что называется.
0
fl00r #
кмд+Т для view — не выход
+1
edelweard #
Вполне выход. Он же показывает, в каком месте в иерархии каталогов находится найденный по названию файл. Хотя не спору, автоматизировать это ещё больше было бы лучше. Посмотрим на обновлённый бандл.
0
fl00r #
когда у тебя на каждый из 20 контроллеров индекс — то надо потратить времени на выборку +)
0
fl00r #
wow!
большое спасибо!
это сейчас очень актуально
0
grossu #
для меня руби рельс был первым. Вряд ли захотеться на что-то менять. RoR уже предустановлен на леопарде, Coda и Texmate его прекрасно поддерживают. Запустил коммерческий проект на отечественном хостере, в общем полет очень даже нормальный.
0
fl00r #
BHost?
+2
grossu #
ваша неправда. Пробовал их, ушел. Щас на 1gb
+2
AntonShevchuk #
Начал изучать RoR, после изучения Zend Framework'a — ROR идет на ура, основная трудность — нет знаний и опыта в Ruby как таковом…

Поскольку мне есть с чем сравнивать — то могу сказать, что и сам ZF скоро догонит RoR — и разница будет лишь в синтаксисе языка, так что не парьтесь холиварами…
+1
AntonShevchuk #
Насчет изящности языков — достаточно написать пару классов для PHP — и получишь объекты для всего :)
Напишу — выложу — похоливарим :)
+1
fl00r #
Не — никаких холиваров. )
0
LimeOrange #
Холиварить не рекомендуется.
Трезво, аргументированно обсудить интересные аспекты — всегда пожалуйста. Но холиварить… Мы же не дети, право.
+1
kibitzer #
Я думаю нет смысла из ПХП делать Руби :) Это глупо, разные парадигмы разработки, при этом также глупо говорить, что Руби изящнее. Изящество относительно, а точнее субъективно (ну а это я автору статьи).
+3
fl00r #
да. это субъективно. а по вашему пхп изящнее руби?
–1
kibitzer #
Нет, по мне и руби не изящен :)
0
kibitzer #
Да, если что, то изящным считаю язык Форт. Если именно про изящество языка говорить. А еще более изящна его виртуальная машина )
0
dsCode #
Что Вы подразумеваете под изяществом? Что Вы вкладываете в это понятие относительно языка программирования? Или Вы просто поддакиваете мэйн-стриму, где каждый второй скрипт-кидис считает своим долгом сказать: «после знакомства с Ruby / Python я возненавидел PHP»? Между прочим, Python был до PHP, а Ruby появился всего лишь через год после PHP — так почему Вы пришли к PHP?

Как по-Вашему, например, JavaScript — это изящный язык? Если да, насколько он изящней PHP и почему? А насколько Ruby?

.ps: мне очень нравятся JavaScript, Python, Ruby — они идеологически похожи, и, действительно, — красивые языки. Но, вместе с тем, я вполне адекватно отношусь в PHP.

Мне просто реально интересно — почему каждый второй в статье о Руби или Питон пишет — «я возненавидел PHP»? При этом, мне, почему-то, кажется, что сам Ruby эти люди знают поверхностно; ведь в 97% их прельстили Рельсы, а не Рубин.
0
fl00r #
1) Где я написал, что возненавидел ПХП?
2) Если мейнстрим говорит, что Руби более изящен, чем ПХП, то наверное он это не рандомная рефлексия.
3) Если я счел Руби, более изящным, чем ПХП, то мое мнение тут же становится результатом заговора против ПХП, а не моим мнением?
4) В рельсовых проектах 90% кода — это руби. И я не сравнивал рельсы с ПХП.
5) Под изяществом я понимаю ясность выражения языка, его читаемость и простоту выражения.
6) JavaScript я предпочитаю ActionScript несмотря на их братские узы =) (я понимаю, что они взаимонезаменяемы). Скорее всего это связано скорее с историческими моментами моей жизни, чем с языком. Я с большим удовольствием пишу на AS, но при этом в нем ничего эстетского не нахожу.

А. Ну и на ПХП я писал как на самом доступным для меня в то время языком.
0
Scala #
2) А мейнстрим — кто?
0
dsCode #
> 1) Где я написал, что возненавидел ПХП?

а, черт, простите, я Вас спутал с неким Julik, о котором Вы упоминали; я сходил по ссылке — live.julik.nl/2005/11/php-is-so-90s и увидел третий пункт.

> то наверное он это не рандомная рефлексия.

конечно не рандомная, а цепная реакция;

При этом и Руби и Пайтон, повторю, действительно, изящны, меня просто умиляют фразы типа «я возненавидел PHP» — т.е. восхваляется продукт через сравнительное унижение другого продукта. Стало быть, к Вам это не относится, прошу извинить.
+1
LimeOrange #
Чуть ниже я описал одну из причин ненавидеть, или, по крайней мере, «не любить» PHP — habrahabr.ru/blogs/ruby/45063/#comment_1138445

Казалось бы, мелочь, но с них всё и начинается. Одна, две, десять. Мелочи накапливаются, накапливаются, и перерастают в нечто большее. В отвращение, что ли…

Нет, конечно, писать на PHP можно. Но… неприятно (не так приятно).
0
dsCode #
По поводу разрозненного именования функций (и как следствие — неопрятности php) полностью согласен.

.ps: я не PHP отстаиваю (мне самому Руби с Питоном больше нравятся; но не потому, что я могу написать 5.times вместо for-цикла, а из-за идеологии), я просто отметил очередное цепное появление подачи PHP в статьях о Руби, не более. Хотя, все, действительно, познается в сравнении.
0
dborovikov #
Да что такого в именах функций в PHP? Скока писал, никогда с этим проблем не было. А то, что там в глобальном пространстве все, так для специализированного языка это нормально. Уж лучше кривые имена функций, чем вкуривать все эти class_eval, module_eval, include, extend и прочие жутко непонятные, навеяные lisp-ом штуковины.
+1
dmiceman #
Git лучше subversion *)
Да кто бы спорил…
0
fl00r #
уверяю — найдутся!
0
kibitzer #
Конечно найдутся, смотря какая задача. Для большинства хватает svn, плюс основной, для него есть клиенты практически под все IDE.

Каждому свое! Статья холиварная, всегда, когда человек начинает изучать что-то новое, что координально отличается от предыдущего, при этом если процесс проходит успешно, он новой идеей заболевает.
+1
danmiru #
> Я никогда не работал с фреймворками в ПХП

Комментарии излишни.

Нет, я допускаю, конечно, что писать плагины и кастомайзить всякие вордпрессы/джумлы и просто писать одноразовые сайты — бизнес, и деньги делать на этом можно, но как-то это… ну, по-индусски, что ли. По-обезьяньи.

Если уж есть хоть пучок рутинок в отдельном файлике, которые таскаются из проекта в проект или просто подкручиваются какие-нибудь сторонние модули — это уже хорошо, а уж если нет — рекомендую все-таки задуматься и посмотреть на то, что такое фреймворки, и, зачем, собственно, их.
0
fl00r #
не совсем вас понял.
почему я не использовал фреймворки — потому что по наивности верил в свою гениальность. и фреймворк мне заменяла (хотя это определенно не то слово) та библиотека классов и методов, что накопились за годы разработки на пхп.
начиналось все конечно с создания собственной ЦМС (по моему дефолтная болезнь пхп разработчиков).

>>рекомендую все-таки задуматься и посмотреть на то,
>>что такое фреймворки, и, зачем, собственно, их.
??? ну да я в курсе что такое фреймворк
+1
danmiru #
Ну так, собственно, в чем отличие собственной цмс, наборов классов и методов от фреймворка?

Модульная структура есть? Стандартный подход к написанию модуля есть? Как минимум обращение к базе унифицировано?

Чем не фреймворк, пусть и не универсальный/функциональный? Трехколесный, корявый, но велосипед.

А если этого нет — собственно, о чем я и говорю — то это надо. Must have.
0
fl00r #
ну и вообще использование / не использование фреймворков это дело исключительно вашей религии
+1
danmiru #
ИМХО — не давлю, но стоять буду — фреймворки нужны. Разные задачи — разные фреймворки. Визитки — один фреймворк, огроменные порталы — другой. Agile-разработка, потоковая, уникальный одноразовый проект — фреймворк нужен.

Чтобы ехать, нужен транспорт. Велосипед ли, самолет, подводная ли лодка, ракета или скейт — но нужен. Нет, можно и пешком, но с транпортом лучше. Это так, утрировано.
0
Mephistophele #
Советую использовать IDE NetBeans. Там если мне не изменяет память есть рельсы да и сама IDE очень удобная.
0
walker #
кстати, только что вышла версия 6.5.
в чендже — вкусности для рубистов.
0
fobos #
ну собственно там для большого спектра IDE заточена.
Сам лично использую её для PHP и Java… Ещё и для Python хочу попробовать.
0
serebro #
А я пробовал Aptana Studio, eсть все что нужно, остался доволен. На их сайте есть скринкаст примера работы в этой IDE c RoR.
–1
coldFlame #
Git лучше subversion *)

Ничего, что распределенный и централизованный контроль версий — это вообще две разных вещи? Сладкое лучше соленого?
0
fl00r #
если вы не беременны — то сладкое лучше соленого )
вам часто принципиально распределен или централизован контроль версий?
0
fl00r #
хотя для меня это скорее преимущество, что он респределенный
+1
coldFlame #
знаете, часто. :) В opensource удобнее распределенная система, в закрытых проектах — централизованная. Потому git использую разве что для стягивания рельсовых плагинов.
0
fl00r #
это скорее политический выбор )
0
coldFlame #
конечно! поэтому нет смысла писать «git лучше svn»
0
fl00r #
вы не оценили всей язвительности моего комментария! =)
+1
kronos #
Не на то акцент ставите. Обе они прежде всего _системы контроля версий_. как система контроля версий git лучше, так как она а) распределенная б) быстрее в) жрет меньше места.
0
fl00r #
спасибо — о том и речь
+1
AlexeyK #
Макс Лапшин действительно разбирается в руби, он одним из первых на него переполз (судя по его блогу в жж), кстати, тут он по-моему тоже есть :)
0
drumm #
спасибо за интересные ссылки, давно хотел посмотреть подробнее на рельсы :)
0
kronos #
по поводу тормозов… ну не знаю… пока я их не наблюдаю вовсе. ilike.com, ilisten.ru, scribd.com, rghost.ru (25к хостов/сутки) полет нормальный. Как правило если производительность и упирается то никак не в рельсы а в базу или скажем в харды (в случае rghost)
0
fl00r #
twitter (правда с переписаным ядром), lookatme и тд в эту компанию.
просто, как я понимаю, в случае с рельсами надо чуть больше времени уделять кэшированию и оптимизации
+1
Scala #
Весь основной функционал твиттера далеко не рельсы — Java/Scala/C++. На рельсах только фронтенд.
0
fl00r #
что же вы такой не внимательный
>>twitter (правда с переписаным ядром)
когда-то он был полностью на рельсах
+1
Scala #
Мне показалось, что вы имели ввиду ядро Рельс, а не Твиттера. Когда-то он и падал по пару раз на дню)
0
fl00r #
ну да — падал. но и нагрузки какие были!?
вряд ли он бы не падал, если бы был написан на ПХП или еще каком высокоуровневом языке )
0
Scala #
Ну и сейчас он написан на ЯВУ но не падает, или вы имели ввиду динамически-типизированные языки.
0
fl00r #
Ну не будете же вы сравнивать Java и PHP (или будете?)
Это языки разного уровня.
Java в конце концов исполняется из байт кода. Отсюда большое преимущество в скорости.
0
Scala #
Я порой работаю с Groovy, он тоже компилируется в байт-код, но всё равно работает медленно. Я уж молчу про существующие VM в Python, Ruby 1.9. Преимущества в другом.
0
kibitzer #
Оффтоп конечно, но вроде как Фэйсбук, такой немаленький ресурс, в пдаучести не замечен, он написан на ПХП.

Твиттер был удивительно падучим ресурсом, при этом, если честно, я не понимаю, как из-за нагрузки ресурс может именно падать, а не просто не тянуть инфраструктура сервера.
0
Scala #
Знаете, чат у фейсбука на Erlang, видео-стриминг на Java, и С/С++ используется. Когда твиттер переписали на эти технологии он тоже перестал падать. Заслуга тут далеко не PHP.
–5
ScuFF #
А я, изучая python, и знакомясь с разными способами писать на нем web-программы (mod_python, GAE, WSGI, django), начинаю приходить к мнению, что mvc — зло. Он подходит хорошо только для очень сложных проектов, код которых, к тому-же часто изменяется, и дизайн будет поддерживать скины или хотябы настраиваться. Для простых сайтов, лично мне, такой паттерн кажется избыточным.

RoR мне кажется тоже слишком избыточным.
+1
fl00r #
Так кто же простые сайты программирует на рельсах?
Совершенно очевидно, что выбор технологии исходит из поставленной задачи.
Можно (и нужно) простые сайты писать на валидном HTML/CSS с применением чистого PHP/Python/Ruby… для добавления серверных примочек, если они необходимы.
+3
edelweard #
Простые сайты — это сайт-визитка или блог одного пользователя? Тогда да, сложно не согласиться. Хотя с другой стороны, почему бы не использовать фреймворк и для них?
А вот если что-то чуть более сложное…
0
Zimyand #
Я сам счас решаюсь на переход на Руби он Реилс или Спринг…
Спасибо за статью. Но вот правда так и не определился)
+1
Scala #
Возьмите Grails — как раз посередине. А вообще выбор странный — птицы разного полёта.
0
Zimyand #
Что странного. Ищу новое) Пробова еще питон — но не навится мне он. Счас учу паралельно спринг и руби он реилс. Может позже определюсь)
За grails — спасибо, обязательно гляну)
+1
Scala #
Ну я про область применения) Grails будет учить быстрее, сразу двух зайцев убъёте — Grails построен на Spring, ну и по продуктивности/красоте Groovy не уступает Ruby.
0
Zimyand #
Я счас пишу в основном на Zend Framework. Достаточно привык к MVC — хочу и дальше писать, но другим инструментом. Ruby on Rails — MVC, Spring — можно тоже писать MVC. Так что ничего странного)
А за пояснения Grails спасибо)
0
Scala #
Ну Spring MVC — далеко не основная часть Spring, там куда больше интересного в плане организации логики, интеграции со сторонними проектами и IoC(DI).
0
Zimyand #
Ну я же не говорил что основная. Пока потребность есть в MVC — будет потребность в другом — выучу подробней.
0
Kaom #
Спасибо.
Буквально сегодня замышлил проект и решил ради самообразования воплотить его на реальсах. А из вашего хабратопика подчерпнул тучу полезных линков.
Единственное — я вместо Е я решил использовать Аптану как оболочку. Зря?
0
tass #
аптана тормозная (по крайней мере у меня автокомплит подвешивает систему на полсекунды примерно), но если не пользоваться автокомплитом и забить на некоторые утечки памяти, то почему бы и нет;)
0
fl00r #
Я не могу судить, так как Аптану не использовал. Я поставил — оно мне показалось тяжеловесным и я снес. Е меня вдохновил схожестью с TextMate (большую часть времени я на маке работаю).
Удачи с вашим проектом )
0
gaus #
Аптана — ужас, летящий на крыльях ночи. При попытке вызвать code assist из вьюхи — сначала тормозит, а потом показывать «NullPointerException».

Мне больше нравятся Рубимайн и Нетбинс. Рубимайн приятный, но платный, и у меня тормозит на 1Gb хуже Аптаны (но при этом честно комплитит, эксепшены не показывает). Сам сейчас пользуюсь Нетбинсом, он шустрее и не падает.
0
kibitzer #
Если у вас не тормозит Эклипс, то и Аптана будет работать со схожей скоростью. Функциона у Аптаны один из лучших.
0
palych063 #
Довольно не плохая IDE rubymine www.jetbrains.com/ruby/index.html
+2
Iskin #
Кстати, присмотрись к другим framework’ам на Ruby: Sinatra и Merb. В Sinatra ты всё сможешь в один компактный файл запихать. А Merb он более лакончиный что ли.
0
fl00r #
Да, это будет логичным развитием. Но это когда рельсы будет освоены в достаточной мере.
–1
Scala #
У рельс тоже проблем хоть отбавляй, да и сам DHH пишет на «ужасном» PHP www.loudthinking.com/posts/23-the-immediacy-of-php — и говорит что штука вполне хорошая. Надо прекратить противопоставлять себя другим и заниматься делом.
0
fl00r #
Вы читали о чем я писал? Занялся разработкой в новой для меня среде. И теперь я просто рефлексирую по поводу технологии. Логично, что я ее сравнивю с тем, с чем знаком (c PHP).
Много хороших проектов (тот же Хабр) написаны на ПХП.

>>Надо прекратить противопоставлять себя другим и заниматься делом.
О каком деле вы говорите? Как буд-то я на Гаваях сейчас расслабляюсь.
0
Scala #
Ну возможно ваша ссылка на «Юлика» с его гневным постом придала такое ощущение.
0
fl00r #
она была в контексте схожего ощущения от изящности конструкций
+1
EugeneKudashev #
Я сейчас читаю книгу Simply Rails 2 (написана в мае 2008, ссылка). Там описан процесс создания своего digg'a с нуля :) Никакого опыта веб-разработки за плечами у меня нет, но язык (вернее, фреймворк) очень и очень нравится своей логичностью и простотой.

За последние несколько дней в нескольких независимых источниках информации читаю о том, что рельсы (и руби вообще) медленные; в частности, на википедии нашёл вот такую ссылку: сравнение производительности языков веб-разработки (по ссылке — сравнение PHP с Ruby). Хочется увидеть какие-то реальные цифры — какие, скажем, нужны вычислительные мощности, чтобы поддерживать, пускай, свой Хабр на 10.000 пользователей, будь Хабр написан на RoR?
0
fl00r #
честно говоря цифры весьма незначитеьные =).
Помнится PHP отставал от Perla в своих ранних версиях на порядки — и ничего — сейчас очень шустро бегает, временами перу не уступает. Да и поприятнее он перла (опять же чисто субъективноэстетически)
+3
LimeOrange #
Не холивара ради, а исключительно практическое (и эстетическое) замечание.

PHP станет «поопрятнее» Perl только тогда, когда в нем появится единый стандарт именования функций и порядок передачи параметров этим функциям. Чего только стоят именования функций «str*» и «str_*» и вообще зоопарк в разделе документации под названием «String Functions».

Для примера, параметры у того же strpos: (строка, искомое), а вот в str_replace: (искомое, замена, строка). У одного из них логика отсутствует, напрочь. Или вот strtoupper() и ucfirst() — казалось бы, очень похожие между собой по задачам функции, а какая огромная (для столь близких функций) разница в именовании. В Perl, замечу, эти функции называются uc() и ucfirst() соответственно. И таких примеров не мало. Раздел Array Functions вообще заставляет задуматся о наличии здравого смысла у авторов названий функций: зачем называть функцию array_pop(), если pop(), фактически, нигде, кроме массива, и не используется? Чем был плох просто pop()? И даже если бы использовался (вдруг, когда-то там), то неужели он не сумел бы сам определить, с чем он имеет дело?

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

Нет, что не говорите, но опрятным PHP никак язык не поворачивается назвать.
0
Scala #
В таких проектах без разницы — логики тяжолой нет, а кеширование/поиск/прочие трудозатратные операции выполняются с помощью других технологий.
0
EugeneKudashev #
с помощью других технологий.

Вас не затруднит в двух словах рассказать — каких?
0
Scala #
> Вас не затруднит в двух словах рассказать — каких?

Зависит от задач: memcached, lucene, hadoop…
+1
Silenius #
Вам тоже понравился MVC? :)
0
Agatov #
а можно несколько примеров, в которых Ruby изящнее PHP?
0
fl00r #
Часто использую конструкции вида:
array.map! do |element|
element += 'add some new stuff'
end
или
5.times do |var|
var += 10
end
тут можно чуточку почитать
0
fl00r #
Вот, кстати, пример обратного мнения
0
fl00r #
Кстати, очень странный чувак — сравнивает рельсы и пхп. с тем же успехом он мог бы с рельс сползти на чистый руби.
+1
fl00r #
В любом случае, язык программирования, как марка фотоаппарата, процессора, солнечных очков — дело вкуса.
0
bewhite #
Это верно. Но верно и то, что любой инструмент, включая языки программирования, формируют у разработчика вкус/привычки и т.д. Связь получается в обе стороны.
0
dime #
А можно несколько примеров языков, которые НЕ изящнее пхп? :) Разве что бейсик в начале своего существования, да фортран до IV включительно.
0
fl00r #
Perl? Да не буду я распят! )
0
dime #
Да ладно!.. В той части, где пхп и перл пересекаются, они практически эквивалентны. Но перл мощнее и эта часть, отсутствующая в пхп, делает его изящнее ;).
0
fl00r #
Ну википедия пишет:
Изначально PHP создавался в качестве надстройки над Perl для облегчения разработки веб-страниц.

А сам я, когда начинал писать на ПХП, со страхом и трепетом смотрел в сторону Perla (уж больно любили делать его нечитабельным разработчики). Еще меня пугали CGI, про который я даже уже и не вспоминаю последние N лет.
+1
dime #
Ну да, простенький шаблонизатор домашних страниц для тех, кто не осилил перл.
Что касается нечитабельности, это больше байки для отпугивания непосвящённых :). Или для тех, кто совсем уж учиться не хочет (вспоминая дискуссию «пхп-программистов» о том, что тернарный оператор слишком сложен для понимания, поэтому его следует заменять целой портянкой «абсолютно читабельного» бейсик-подобного кода).
Что до изящности — достаточно сравнить перловые регэкспы и их пхп-шную, с позволения сказать, реализацию с этими размножающимися слешами… Да, и функция map, кстати, в перле есть :), хотя и несколько менее изящная, чем в руби (впрочем, перлом я занимался ну очень давно, может там сейчас всё вообще супер).
0
fl00r #
Ну да, в том, что перл был страшилкой для неофитов — это так, на себе испытал )
0
gaus #
«но хотелось бы нажатием пары клавиш очутиться… из метода контроллера в его представление»

CTRL-SHIFT-a в Нетбинсе
0
fl00r #
Проблема уже решена даже в родном ТекстМэйте =)
0
gaus #
Мне нравятся рельсы.

Главная проблема, которую я увидел — слишком много функциональности в плагинах, которые поддерживаются по отдельности различными сообществами. Из-за этого они бывают несовметимы — например, гем composite_keys и плагин activescaffold не дружат в одном проекте. Ну и разумеется при обновлении версии рельсов отваливается часть плагинов.
+2
Novikov #
а на руби есть аналог функции do_everything_pzdt()?
+3
LimeOrange #
<irony>
Была когда-то давно, но её убрали, ибо юные падаваны рубисты слишком часто ею увлекались, и уходили в себя, в глубь, постигая неизведанные тайны, но не возвращались никогда, чтобы о тайнах этих другим людям поведать… И тогда убрали эту великую функцию, так как зло страшное в себе таила она. Но до нас дошли её исходники, ибо вот она, кроткая и лаконичная, невероятно однострочная и бесконечно красивая, созерцайте:
def do_everything_pzdt; print «h»; while true: print «m»; end; end;
Только не увлекайтесь сильно. ;)
</irony>

PS. «Типограф» задолбал окончательно. Даже <code> не спасает.
0
fl00r #
парсер лох
0
bifurcate #
из книжек: Rails Recipe перевели же давно.

по моему мнению и опыту — гугл группа RubyOnRails to russian не любит нубов, насколько я помню. и вообще там своего рода «секта» сформировалась. много снобизма. как-то так.

в россии проблема с хостингом под рельсу да и руби.
0
Scala #
Просто с Rails даётся насадка на член +20 см и не у всех хватает воли не опробовать её и потом идти в блоги писать посты, какой у них теперь длинный.

Хостинг — вовсе не проблема, сейчас VPS с 256MB стоит 20 баксов. Да и mod_rails вещь в принципе удобная пока вы, например, не захотите запустить приложение под Windows Server. В остальном сейчас выходят 2.2 рельса, где починили многопоточность и JRuby может заработать не только шустро(он это уже умеет), но и памяти с Rails будет есть куда меньше. Впрочем товарищи, которые уже накушались рельс перелезают на Merb, в ror2ru довольно интересное обсуждение на эту тему.
0
fl00r #
>> идти в блоги писать посты, какой у них теперь длинный.
чорт, забыл упомянуть про свое моджо в статье! =)
+1
Scala #
Да просто пипец как часто пишут, вон я news.ycombinator читаю — www.web2media.net/laktek/2008/11/21/i-want-to-be-a-ruby-hacker/ сейчас уже спад пошёл, но раньше я куда чаще встречал такие вот get mac, rails, ruby, git, rspec, agile, etc. & rule the world!
0
fl00r #
Прикольно =) я попал под раздачу значит. Я не замечал, кстати.
0
Sakura #
я не видел ни одного проекта на руби, при чем какого-нибудь мало мальски известного.
Можно пару примеров плиз :)

P.S. не видел наверное в силу того что просто не искал и не сталкивался.
0
einzam #
0
Sakura #
полез посмотреть сорцы, зачетный таргетинг :)

+1
Sakura #
****************************************************************************************
** **
** __ _____ _____ _____ _____ _____ _____ _____ _____ _____ _____ _____ **
** | | | __ | __| | __| | __ | | __| __| __| | | __| **
** __| | | | __ -|__ | | __| | | -| | | | __| __| -|__ | **
** |_____|_____|_____|_____| |__| |_____|__|__| |_____|_____|_____|__|__|_____| **
** **
** **
** RUBY OR CSS OR JAVASCRIPT OR FLASH GURUS WANTED **
** **
** WE NEED PEOPLE TO WORK WITH US ON LOOKATME.RU **
** **
** SALARY DEPENDS ON KNOWLEDGE **
** MAIL YOUR RESUME OR INFO TO ANDY@LOOKATME.RU **
** SKYPE ANDREW.ZOTOV ICQ 235865598 **
** **
** **
** habrahabr.ru/job/507/ habrahabr.ru/job/533/ **
** **
** **
****************************************************************************************
0
einzam #
Да)
Было желание с ними поработать)
Да ща не в мск живу=(
0
fl00r #
twitter.com
lookatme.ru
dom.ru
arroundme.ru
groups.google.com/group/ror2ru/web/rubyonrails-2
0
kronos #
ilike.com
scribd.com
rghost.ru :-[
0
gkirok #
«Особенно я писаю кипятком от организации отношений вроде has_many и прочих.»
до того как писать попробуйте связать три таблички записей на поллимона, а потом вытянуть рором аттрибуты из первой, боюсь вам придется и обкакаться
ибо такие запросы лучше писать ручками, а не полагаться на фреймворк
0
fl00r #
кто ж спорит?
0
dborovikov #
Боитесь? А вы не бойтесь, просто читайте логи. Кстати три таблички связываются с помощью has_and_belongs_to_many :foos, :join_table => 'bars'

>ибо такие запросы лучше писать ручками, а не полагаться на фреймворк

В начале стоит положиться на фреймворк, а потом уже вкурить логи и решить, что следует написать вручную.

Я не защищаю РоР, но все же использование ORM уже вполне стандартная пркатика везде и не стоит ее бояться. Хотя у РоРа просто КУЧА недостатков. Кстати слабо их назвать? А то тут воспевают, как будто это фреймворк-панацея.
0
gkirok #
> В начале стоит положиться на фреймворк, а потом уже вкурить логи и решить, что следует написать вручную.

зачем полагаться на фреймворк в том что он плохо делает? потом курить логи, и переписывать вручную?

> но все же использование ORM уже вполне стандартная пркатика везде и не стоит ее бояться

я не технологии боюсь, а ее конкретной реализации

> Хотя у РоРа просто КУЧА недостатков. Кстати слабо их назвать? А то тут воспевают, как будто это фреймворк-панацея.

вы счас с кем разговариваете?
0
dborovikov #
>зачем полагаться на фреймворк в том что он плохо делает?

Логичный вопрос — если вы так уверены (кстати, откуда увереность, вы же даже не видели логи что оно там творит?) что сделаете без фреймворка лучше, то зачем он вам вообще нужен?

>вы счас с кем разговариваете?

С вами. Хотел вам показать, что косяков море но они точно не с составлением типовых запросов из БД, на ActiveRecord вообще редко жалуются.

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