пятница, 29 апреля 2011 г.

Карты, деньги, два ствола... Нет... Ruby, Rails, метапрограммирование

Нынче уже некоторое время пишу под Rails. С сожалением смотрю на себя, ибо все таки Python опыт - это опыт Python, но не Ruby. Добрался до некоторой задачи, и захотелось упростить некоторые вещи в шаблоне, а стандартные средства routes не устраивают. Точнее устраивают, но не совсем полностью. Спасибо Печорину Андрею, который подсказал некоторый выход из ситуации, и навел меня на метапрограммирование, которое, как оказалось хорошо применяется в Ruby.
Ничего серьезного, или дико умопомрачительного я не опишу, но покажу, что даже злостный eval (да-да, питонисты, да и вообще, сразу косо посмотрят на меня), может быть полезен, и он довольно таки вписался в Ruby. Точнее был красиво вписан туда.

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

вторник, 19 апреля 2011 г.

Впечатления от Ruby On Rails 3

Уже больше недели безвылазно сижу в Chromium, Sublime Text2 и консоли. На подходе дедлайн по дипломному проекту, а у меня еще куча работы. После месяца упорных трудов с Flask, понял таки, что писать на нем большой проект с нуля - мне просто не по зубам. Не тот масштаб, и многое делать придется в ручную.
Ввиду того, что уже давно поглядываю на всем известные и нагремевшие Ruby On Rails, решил таки посмотреть, что там и как. По основным требованиям мне нужна была хорошая поддержка MongoDB, а также просто хорошие инструменты разработки для быстрого старта. На Python, среди таких инструментов мог бы оказаться Django, но вот проблема поддержки MongoDB - к сожалению актуальна в некотором плане.
Для начала осмотрелся с драйверами для MongoDB. Сразу подвернулся Mongoid. Взглянул на доки, пускай местами скудные, и во многом с ссылками на ActionRecord, но вещь оказалась более чем достойна внимания. Это поставило точку в моих терзаниях. С горькими слезами по тому, что таки на Python даже MongoKit не умеет таких прелестей, на какие способен Mongoid, я скрепя сердце создал новый проект на рельсах.