← All posts tagged Rails

demiazz

Все. Окончательно определился с тем, какой инструмент буду изучать и использовать в дальнейшем для генерации форм в рельсах. Определенно выбор пал на SimpleForm 2.0. В отличии от обычных форм — нет геммороя по написанию огромного количества кода для bootstrap верстки форм. И в отличии от Formtastic они имеют интегрированную поддержку изнутри. Плюс, это от разработчиков Devise, а именно это творение Plataformatec. Спасибо @pechorin_andrey за наводку и за ссылку на эту статью: blog.plataformatec.com.br

demiazz

Жуйкорельсовики. Вот есть такие гемы как simple_form и formtastic. Кто нить ими пользуется, чего вкусного они дают и вообще насколько оправдано и красиво их использовать? Или можно просто игнорировать их существование и писать на обычных встроенных хелперах Rails?

demiazz

Буквально, наверное вчера, пофиксил досадную ошибку в nested_form. Ошибка благо не в Ruby части, а всего лишь в JS (честно говоря, я уже много и других патчей немного для других ошибок пробовал), но на данный момент ошибка коварная. Заключается она в ошибочном алгоритме обработки родителя и индекса. То есть, при использовании nested_form, на любом уровне вложенности может быть связь как has_one, так и has_many. При этом, во втором случае, при генерации name элемента после attributes ставится [index] элемента. А при has_one — нет! Из-за этого возникала ошибка parse && replace имен и id элементов. Форк с исправлением тут: github.com Код там не шибко красив и изящен, писал уже в запарке и со сдающими нервами, но если хочется красоты — можно и привести к нормальному виду. Проверял на сложной форме, с макс. уровнем вложенности 4, и с кучей подформ. Работает. (: Если кто найдет баги, отписывайтесь. Тестировал на Ruby 3.2.2

demiazz

Небезызвестная компания Throughtbot, которая славится одной из лучших Ruby On Rails команд на мировом уровне, предлагает свою книгу Backbone.JS on Rails. Книга конечно платная (а вы что хотели? 37signals свои тоже не в open-source отдают). Судя по содержанию — книга вполне объемная и освещающая разработку и организацию Backbone.js приложения вместе с рельсо-приложением, а также аспекты разработки оных. Короче, вот ссылка: workshops.thoughtbot.com

demiazz

Кстати. О технологиях. Я ведь, вроде как давно и активно и с любовью продвигаю рельсы и Twitter Bootstrap. Первое ладно, и у каждого бэкэндщика свое мнение сложилось. А вот Bootstrap. Реально, мне пока мало доводилось видеть сайтов, на которых можно демонстративно показать, что Bootstrap, это не просто какой-то набор готовых виджетов, а действительно мощный фреймворк, который вовсе не связывает руки. Вот пример: 42conf.com Верстка полностью построенна на Twitter Bootstrap. Кто видел его ванильную мордашку, но не видел сильно модифицированных примеров (к примеру я таких видел пару штук, и то ссылки похерил, ибо не вовремя на глаза попались), тот может и удивиться.

Для знающих, и интересующихся, предлагаю взглянуть на структуру главного меню, на id и class, которые используются, а также к примеру зайти сбда: 42conf.com Внимательные, могут увидеть, и кусочек истинной ванильной сущности Bootstrap (а именно class='alert alert-info').

Вот такие дела, так что, это один из ярких примеров, что инструменты подобно Twitter Bootstrap нужно уметь готовить и применять, совершенно не боясь, что он выглядит по одному, а дизайн у приложения совершенно другой.

demiazz

Не знаю, сталкивался кто, или нет, но в nested_form, пока что есть очень неприятный баг (точнее недоработка). Заключается в том, что nested_form не умеет обрабатывать вложенные связи с одинаковым именем.

Собственно, тикет (которому уже 10 месяцев, с парой решений и патчей, но не из репозитория):

Лично же я столкнулся с ней немного в другом виде. Есть плагин devise_invitable. И так получилось, что у модели User есть подчиненная модель Profile, которую желательно и заполнять прямо на этой же странице. Имеется модель Link. И есть такой код, очень так размыто, но все же: gist.github.com

Код очень такой примерный.

Структура верстки формы, примерно такая: gist.github.com

Она очень урезана, но позволяет показать, то, что у меня имеется. Весь смысл в том, что не смотря на то, что казалось бы есть внешние и внутренние формы для ссылок, nested_form не умеет их корректно обрабатывать. Не сработал метод, и переименования связи, с явным указанием class_name: 'Link'

Такие дела.

demiazz

На проекте, нужно реализовать довольно такую интересную, но очень гемморойную задачу. По сути, авторизация и регистрация — дело плевое, когда это без ивращения. Devise спасает, но когда к пользовательской учетке привязывается профиль с десятками разных связей, и вот из этого чуда надо на nested_forms построить одну большую форму с 3-4 уровнями вложенности, то иногда задумываешься, что Django Forms с JS плагином не так уж страшны :D

demiazz

Очередной раз залез в сторону HAML. И решил еще разок посмотреть на Slim. Что-то везде разговоры, что ERB рвет их как тузик на скорость. Что Slim приятнее HAML. Но в итоге для себя сделал вывод, очередной так сказать раз:
1) ERB в топку, ибо мне хватило и Underscore Template и Django Template. Открывание и закрывание всяческих тегов занимает огромное количество времени, и раздражает неимоверно.
2) Посмотрев на Slim еще раз, после долгого времени без HAML и Rails — все равно не увидел преимуществ. Ну да, более Ruby приближенный, так как избавились от скобочек у параметров, и % перед тегом. Это отчасти удобно, но я хотя бы вижу этот % и вижу сразу — тег, а не просто ключевое слово. Очень сильная должна быть ставка на подстветку синтаксиса и соответствия спецификации в случае Slim.
3) А скорость. Да хрен со скоростью же. Стоимость человекочаса дороже, чем стоимость машиночаса. Да и тормоза же не от шаблона по большей части, а от Ruby, и... И вспомним, что у нас еще вложенные подшаблоны, партиалы и прочее — это скорости не добавляет, и в принципе уравнивает все три конкурента.

В итоге: мой выбор HAML!

demiazz

Знание Rails все таки иногда полезно. В частности, там более прозрачный процесс запуска приложения и подхватывания всяких настроек, инициализаторов и прочего. Плюс оно красиво логически выстроено. Когда я говорю "более прозрачный", я говорю, что он более прозрачный для меня, чтобы не возникло холивора, или не подумали, что я тут снова камнями в Django кидаюсь )

Вот сейчас подход Rails опробую для прикручивания его к нашему JS приложению на базе backbone.js. Довольно так прозрачненько ложится, учитывая еще и то, что возможно из этой базы в дальнейшем будет извлекаться свой "домашний" фреймворк, оно кажется самое то )

demiazz

Если кто нить портирует хелперы форм с рельсов на Django — я его на руках буду носить. Честно. Он будет мой герой. А если я встречу того, кто придумал формы в Django — того я на месте прибью. Просто закопаю нахрен. >_< Мало того что в наследство досталась переиначенная, манкипатченнохуйпойми с каким кодом огромная форма, так мне теперь либо извратиться надо с формой и манкипатчить ее (так как эта падла ModelForm), чтобы добавить эти ебанные CSS классы, которые должны быть в ШАБЛОНЕ (О боги, какой же у меня баттхерт), либо делать суперизвращения со стилями, чтобы добавить сраное выравнивание для сранного поля ввода. Не ну пиздец ли?

demiazz

Никогда, сука, не пиши scope и методы коллекций как @classmethod'ы, только как методы ObjectManager'а. >_< Это не рельсовая ActiveRecord, где scope'ы и работа с коллекцией идет через методы класса. Это Django ORM, где такие задачи решаются через ObjectManager, и должны быть доступны по Model.objects.your_method. >_<

demiazz

Прошла конференция RailsClub, но как рассказали, организаторам не предоставили камеру с оператором, так что видео можно не искать. Зато Макс Лапшин подкинул презентацию со своего доклада (а как известно, он не только великолепный джедай рельсов, но уже и джедай Erlang). Ничего особенно подробного в самой презентации нет, но она самодостаточна и отлично передает те мысли, о которых и рассказывал автор на конференции. В общем о чем это я... Вот ссылка для просмотра: slideshare.net Есть мнение, что это полезно не только тем, кто разрабатывает тяжелые приложения на Rails, но и разработчикам на Django. Естественно это не ниша интернет магазинов, а более тяжеловесных приложений, но плох тот солдат, который генералом стать не хочет )

demiazz

Вот еще одна маленькая прелесть, за которую обожаю HAML — он автоматически "сжимает" HTML-код. В отличии от многих стандартных шаблонизаторов типа ERB, Django Templates, Jinja2. Если ERB еще кое как, то пустые две три строки после нормально распределенного и визуально кода шаблоа — просто мозолят глаза. %)

demiazz

Вышли лекции из Стенфорда, доступные онлайн. saas-class.org — лекции по разработке Long Live SaaS Service на примере использования Ruby On Rails и связанных методиках. Короче, тем кому интересен high load и рельсы (второе не обязательно) — это для вас.