Когда я только начинал задумываться о том, чтобы приобщиться к миру веб-разработки, и выбирал язык, с которого начну, одна из википедий мне напела, что в основе философии Rails лежат 2 принципа: Convention over configuration (CoC) и Don’t Repeat Yourself (DRY). Что касается первого — я тогда вобще не понял о чём речь, а вот второй понял, принял и ожидал, что в недрах этого замечательного фреймворка, я отыщу нативный инструмент, позволяющий мне один раз написать правила валидации для атрибутов модели, и потом использовать эти правила как для front, так и для back проверок.
Читать полностью »
Рубрика «ruby on rails» - 23
Rails: Frontend-валидация в стиле DRY
2014-02-18 в 18:45, admin, рубрики: DRY, ruby on rails, validation, метки: dry, ruby on rails, validationКак я взломал Гитхаб еще раз
2014-02-07 в 18:41, admin, рубрики: github api, ruby on rails, security, Веб-разработка, информационная безопасностьЭто история о том как я соединил 5 Low-severity багов в один большой баг, с помощью которого можно было читать/писать в приватные репы на Гитхабе (опять).
Несколько дней назад гитхаб запустил баунти программу. За 4 часа я смастерил такой URL после посещения которого я получал доступ к вашему гитхаб аккаунту и репозиториям. Хотите узнать как?
Читать полностью »
Почему не нужно использовать RJS
2014-01-19 в 17:44, admin, рубрики: rails, ruby on rails, Веб-разработка, информационная безопасность, метки: railsУ jQuery есть встроенная фича — если сервер ответит с content-type=text/javascript библиотека выполнит ответ автоматически.
jQuery.ajaxSetup({
accepts: {
script: "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"
},
contents: {
script: /(?:java|ecma)script/
},
converters: {
"text script": function( text ) {
jQuery.globalEval( text );
return text;
}
}
});
Поэтому в рельсах довольно распространена тактика «ответь строчкой Javascriptа вместо правильного JSON, который придется обрабатывать».
Эволюция сборщика мусора в Ruby. RGenGC
2014-01-12 в 19:47, admin, рубрики: garbage collector, ruby, ruby on rails, Программирование, сборка мусора, метки: garbage collector, ruby, ruby on rails, сборка мусораКоити: Порог срабатывания сборщика мусора в Ruby — 8 МБ. Почему используется такое маленькое значение?
Matz: Потому что 20 лет назад я работал на машине с 10 МБ памяти.
Вопрос производительности всегда был одним из наиболее обсуждаемых и актуальных в Ruby-сообществе. Будь то высоконагруженный веб-сайт или простой скрипт по бекапу данных — скорость работы является их важнейшей характеристикой. При этом знание возможностей и ограничений языка разработки зачастую служит важным источником идей для оптимизации, позволяет «выжать» максимум из системы.
В статье речь пойдет об одной из наиболее сильно влияющих на производительность частей языка Ruby — сборщике мусора, алгоритмах его работы и улучшениях, внесенных в его работу в последних версиях языка. Речь пойдет о наиболее распространенной, «канонической» реализации Ruby — так называемой MRI или CRuby.
Читать полностью »
Полиморфные сквозные ассоциации в Ruby on Rails
2014-01-12 в 14:32, admin, рубрики: ruby, ruby on rails, Программирование, проектирование баз данных, метки: ruby, ruby on rails, проектирование баз данныхВ статье идет речь о методе создания полиморфизма для связей many-to-many в Ruby on Rails.
Задача
Допустим, что необходимо разработать систему управления грузовым транспортом. В нашем распоряжении имеются несколько видов этого транспорта: поезда, вертолеты, грузовики и баржи. И известно, что каждое средство осуществляет перевозку только в строго определенные населенные пункты. Например, часть грузовиков катается по центральной части России, часть по южной, вертолеты работают в Сибири и на Камчатке, поезда вообще ограничены железнодорожным полотном и так далее.
Каждый вид транспорта в разрабатываемой системе будет представлен своим классом: Train, Copter, Truck, Ship соответственно.
Населенные пункты (города, поселки, научные станции, тут нас интересует не размер, а географические координаты), куда осуществляется перевозка, представлены классом Location.
Стоит условие: к каждой единице транспорта может быть привязано сколько угодно Location. В свою очередь к каждому населенному пункту может быть привязано сколько угодно единиц транспорта разных видов.
Читать полностью »
Как использовать Memcached с Ruby on Rails в Ubuntu 12.04 LTS
2014-01-11 в 18:21, admin, рубрики: memcached, ruby, ruby on rails, UbuntuMemcached — система для кэширования объектов в памяти, которая работает очень быстро. Использование Memcached может значительно увеличить скорость работы Rails-приложения с минимальными затратами.
Предварительные условия
Предполагается, что в вашей системе уже установлены Ruby on Rails и Memcached. Если это не так, то вам помогут ссылки, приведенные ниже:
- Как установить Ruby on Rails в Ubuntu 12.04 LTS (Precise Pangolin) с RVM (прим. переводчика: на русском можно почитать здесь)
- Как установить и использовать Memcache в Ubuntu 12.04 (прим. переводчика: на русском можно почитать здесь)
Также предполагается, что у вас есть запущенное Rails-приложение, которое вы планируете оптимизировать с помощью Memcached.
Читать полностью »
Обработка ошибок в RESTful приложениях
2014-01-07 в 20:59, admin, рубрики: json, rest, RESTful, ruby on rails, Веб-разработка, Проектирование и рефакторинг, метки: json, rest, RESTful, ruby on rails
За последнее время очень многие веб-фреймворки обзавелись RESTful роутингом. Более того, REST стал де-факто стандартом проектирования архитектуры веб-приложений. Практически все более-менее значимые сервисы обзавелись RESTful API с представлением данных через xml и json форматы. Такой популярности REST помогло как появление большого количества руководств, так и горячие обсуждения REST среди специалистов.
Вместе с тем, REST до сих пор воспринимается скорее как некоторый набор правил роутинга, а всё что не связано в прямую с роутингом решается произвольным путём, в частности это касается обработки ошибок в RESTful-приложениях.
Модуль определения источников посетителей сайта для Ruby on Rails
2014-01-04 в 10:18, admin, рубрики: ruby on rails, веб-аналитика, метки: ruby on rails, веб-аналитика Этот пост в основном о веб-аналитике: о том, как корректно определять источники посетителей вашего сайта, и о моём модуле для Ruby on Rails, который помогает в этом нелёгком деле. В конце есть небольшая часть, на которую я попрошу обратить внимание участников Rails сообщества: она обо мне и Rails. Но давайте по порядку.
Читать полностью »
Аутентификация в Rails-приложениях с помощью Devise. Часть 1: базовая настройка
2014-01-04 в 0:02, admin, рубрики: devise, ruby, ruby on rails, аутентификация пользователей, метки: devise, аутентификация пользователейПредлагаю вашему вниманию один из лучших, на мой взгляд, гемов для аутентификации в rails-приложениях. К сожалению, русскоязычной информации по данному гему очень мало, в том числе и на хабре, поэтому хочу осветить данную тему. Статья, в первую очередь, рассчитана на новичков и представляет из себя подробный туториал по настройке аутентификации на основе упомянутого гема. В первой части я освещу шаги по базовой настройке. Далее подробнее о геме.
Devise — это ruby-гем, предоставляющий возможности для аутентификации в rails-приложениях. Devise работает в связке с гемом Warden, который в свою очередь предоставляет сам механизм для аутентификации в rack-базированных ruby-приложениях. Основные особенности Devise описаны ниже:
- основан на Rack;
- является законченным MVC-решением, основанным на Rails;
- разрешает вход в систему по нескольким моделям одновременно;
- основан на модульности: использует только то, что вам действительно необходимо.
Итак, приступим к установке и настройке Devise для вашего rails-приложения. Дальнейший процесс для удобочитаемости будет разбит на отдельные шаги.
Читать полностью »