Как стать автором
Обновить
0

Ruby on Rails *

Фреймворк, написанный на Ruby

Сначала показывать
Порог рейтинга
Уровень сложности

ActiveRecord Query Interface 3.0

Время на прочтение5 мин
Количество просмотров5.8K
В данном переводе рассмотрены нововведения в следующей версии ActiveRecrod для Ruby on Rails 3, а так-же описана часть модуля, которая будет исключена в пользу поддержки новых интерфейсов.

Что потеряет поддержку в Rails 3.1?


Следующие методы будут считаться устаревшими в релизе Rails 3.1 (но не Rails 3.0), и будут полностью исключены из Rails 3.2 (хотя можно будет установить специальный плагин для их дальнейшего использования). Имейте в виду это предупреждение, т.к. оно влечет за собой значительные изменения в коде.

В кратце, передача хеша options, содержащего :conditions, :include, :joins, :limit, :offset, :order, :select, :readonly, :group, :having, :from, :lock любому методу класса, предоставленного ActiveRecord’ом отныне считается устаревшим.

Рассмотрим это более подробно.
Читать дальше →
Всего голосов 32: ↑28 и ↓4+24
Комментарии38

Защита от XSS в Rails 3

Время на прочтение4 мин
Количество просмотров3.4K
Скорее всего вы уже знаете о том, что в Rails 3 по умолчанию добавлена защита от XSS атак. Это значит, что отныне вам никогда не придется вручную фильтровать ввод пользователя используя хелпер h, потому что рельсы всегда будут делать это за вас.

Тем не менее, всё не так просто, как кажется на первый взгяд. Рассмотрим следующий код:
Привет <strong>друзья</strong>!

<%= tag(:p, some_text) %>
<%= some_text %>

Читать дальше →
Всего голосов 31: ↑26 и ↓5+21
Комментарии21

Обзор онлайн-справочников для Ruby On Rails

Время на прочтение4 мин
Количество просмотров5.7K
Мало найдеться программистов (особенно начинающих), способных держать в голове названия всех нужных методов а так-же количество, порядок и назначение передаваемых им параметров. Для этого существуют справочники по API.

В этом посте я хотел бы собрать вместе несколько полезных, посвященных Ruby on Rails, справочных ресурсов (в том числе и по API), которые всегда удобно держать под рукой, в соседней вкладке браузера.

Речь пойдет о:
Читать дальше →
Всего голосов 51: ↑44 и ↓7+37
Комментарии12

Полиморфные связи. Маленькое дополнение

Время на прочтение3 мин
Количество просмотров1.3K
В декабре на Хабре была хорошая статья, о полиморфных связях в Рельсах. Вот она. Перед тем как читать дальше, пожалуйста ознакомьтесь с ней.
Однако, у автора статьи осталось несколько неотвеченных вопросов. Вот на них то мы сегодня и найдем ответы.
Читать дальше
Всего голосов 35: ↑30 и ↓5+25
Комментарии6

Истории

19 необщеизвестных приёмов

Время на прочтение5 мин
Количество просмотров2.1K
Заметка не новая, но я уверен, что и сейчас не все знают всё нижеперечисленное (Здесь и далее курсив переводчика).

Когда я смотрю на свой, да и на чужой, код на рельсах, я часто вижу нереализованные возможности для применения определённых рельсовых техник. Я бы хотел перечислить некоторые приёмы и советы для повышения эффективности приложения и кода, как памятку для себя и для вас.

Замер скорости в контроллерах — это очень просто. Используйте метод benchmark в любой модели.
Читать дальше →
Всего голосов 41: ↑32 и ↓9+23
Комментарии30

STI — одна таблица и много моделей

Время на прочтение3 мин
Количество просмотров28K
Вчера, в заметке про полиморфные связи в комментариях был упомянут паттерн STI. Как выяснилось, не все знают что это такое, как работает и зачем нужно. Решил восполнить этот информационный пробел и вкратце рассказать об этом шаблоне проектирования и его реализации в Рельсе.

STI (Single Table Inheritance) — паттерн проектирования, который позволяет перенести объектно-ориентированное наследование на таблицу реляционной базы данных. В таблице БД должно присутствовать поле идентифицирующее название класса в иерархии. Зачастую, в том числе в RoR, поле называют type.

Таким образом, мы можем иметь одну таблицу и несколько типов объектов (моделей), которые будут в ней храниться. В случае с вышеупомянутой хабразаметкой — это одна таблица постов, которая хранит посты разных типов: ссылка, подкаст, статья, перевод и т.д.

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

Приступим.
Читать дальше →
Всего голосов 13: ↑8 и ↓5+3
Комментарии8

Создание мульти-модельных форм

Время на прочтение7 мин
Количество просмотров21K
Иногда требуется создать форму, данные которой связаны с несколькими таблицами. К примеру, у вас имеется две модели: Owner и Car. При добавлении нового Owner'a хотелось бы, чтобы была возможность сразу добавить машину. С появлением Rails 2.3 это стало проще.

# Старый вариант (приблизительный)
def create
  @owner = Owner.new(params[:owner])
  ...
  if @owner.save
    @car = Car.new(params[:car])
    if @car.save
    ...
end

# Новый вариант, Rails 2.3+
def create
  @owner = Owner.new(params[:owner])
  ...
end


Где же магия?
Всего голосов 64: ↑54 и ↓10+44
Комментарии16

Полиморфные связи

Время на прочтение10 мин
Количество просмотров10K
На днях в блоге Ruby on Rails появилась статья о полиморфных связях, в которой автор писал всякие разные вещи, но при этом забыл упоминуть, как их использовать и зачем они нужны (потом, конечно же, исправился, но все равно написал достаточно поверхностно).
Поначалу я даже испугался, что это моя статья каким-то непостижимым образом вырвалась из «черновиков» и попала в общую ленту. Потом разобрался, собрался с мыслями, и решил таки дописать свою.

Что же такое полиморфные связи и для чего они нужны? В одном из своих скринкастов Ryan Bates уже рассказывал об этом, и я ни в коем случае не хочу рассказывать то же самое. Ситуация была следующей:
у нас есть модели Статьи, Фотографии и События. А еще есть модель Комментарии. А еще очень хочется все комментарии (комментарии статей, фотографий и событий) хранить в одной таблице.
Статей по этой проблеме в интернете очень много, но бывают и случаи «наоборот». Далеко ходить не нужно, давайте попробуем разработать функционал постов Хабрахабра!
Читать дальше →
Всего голосов 58: ↑49 и ↓9+40
Комментарии37

Rails и полиморфные связи

Время на прочтение3 мин
Количество просмотров7K
В большинстве руководств по Rails, которые мне попадались в руки, в примерах по полиморфным связям есть интересная особенность выбора типа для этих связей, о которой и пойдет речь в этом посте.
Читать дальше
Всего голосов 28: ↑20 и ↓8+12
Комментарии24

Backup My App – резервное копирование сайтов на Ruby On Rails

Время на прочтение1 мин
Количество просмотров1K
Привет, ruby-on-rails-разработчики. Я работаю программистом в Теориях и практиках и хочу рассказать про Backup My App – сервис бекапа для ror-приложений, который мы используем.

Его придумали и сделали ребята, с которыми я работаю; они как-то раз выяснили, что некоторые хостинги умеют подчистую удалять данные и сразу после этого начали мечтать о простом резервном копировании.

Как это работает

Сервис платный: есть бесплатный тарифный план только для одного приложения на один гигабайт, либо нужно платить за 5 гигабайтов 3 доллара в месяц, за 100 гигабайтов – $60. После регистрации нужно
  • установить плагин
    $ script/plugin install git://github.com/crocoduck7/backupmyapp.git
  • запустить генератор
    $ script/generate backupmyapp KEY=выданный ключ
а потом отправить изменения на сервер. После этого сайт – код, база данных, файлы – начнет бекапиться.

Что это даст



Это даст ежедневные автоматические бекапы с предпросмотром в браузере, загрузкой, восстановлением и просмотром статистики за просто так. Я считаю, что это чудо.
Всего голосов 36: ↑29 и ↓7+22
Комментарии35

Пост — вопрос

Время на прочтение1 мин
Количество просмотров714
Приветствую.
По долгу службы иногда приходится давать оценку сторонним разработкам, людям и так далее. Сегодня был в крупной конторе, лидере рынка в своей области. Обычно моя задача в подобных мероприятиях подобна поиску иголки в стоге сена — я ищу издержки, дыры в бюджетах и лишних сотрудников. Довольно трудно найти изъяны в системах, которые поднимают и ведут вменяемые, умные люди. Однако сегодня было исключением. С порога тех.руководитель начал говорить, что их узкое место — RnR, т.е. бэкенд. Я уточнил, действительно ли это не база. Однако посмотрев на вывод htop (linux на борту) действительно увидел, что 2 сервера (по 6 гигов оперы и по 2 ксеона последнего поколения с 4-мя ядрами) загибаются под «тяжбой» проекта с посещаемостью 30к хостов в день и 300к хитов в день. Причем узким место действительно является RnR, судят по htop. Ну, или кривые руки разработчика.
Собственно поэтому и вопросы к вам, уважаемые коллеги, т.к. у меня пробел по части RnR:

1) Действительно ли RnR способно жрать столько программного процессорного времени, или же искать узкие места в ПО? И если искать, то чем? Существуют ли дебагеры?
2) Проблема есть, но решить её надо быстро, до декабря. Существуют ли какие-то акселераторы для Ruby? Кеши?
3) В качестве решения проблемы их техруководителем предложено купить дорогущий сервер 100к+ рублей для его дальнейшей кластеризации с другими. Я предлагаю за те же 100к купить 4 слабых сервера, накинуть на них RnR, сурсы и балансировать нагрузку. С одной стороны это переплата за место в стойке, с другой это явно лучше, чем один мощный сервер. С моей точки зрения.
Читать дальше →
Всего голосов 11: ↑5 и ↓6-1
Комментарии23

Хостинг для Ruby On Rails приложений

Время на прочтение1 мин
Количество просмотров28K
Добрый день, Хабр!

Встала у меня проблема выбора хостинга для своих Ruby On Rails проектов. На сервере компании, где я работаю я их больше размещать, по определённым причинам, не могу. Поэтому, Хабр, прошу тебе сказать мне, каким хостингом лучше пользоваться и почему.

Спасибо.
Всего голосов 74: ↑42 и ↓32+10
Комментарии67

Повышаем производительность Ruby on rails приложений с помощью ActiveMQ

Время на прочтение4 мин
Количество просмотров8.6K
В своём посте хочу рассказать о возможности использования ActiveMQ в проекте написанном на фреймворке Ruby on rails.

Что такое Message Queue?


MQ – это архитектура обмена сообщениями между компонентами приложения в асинхронном режиме. Т. е. отправитель и получатель могут взаимодействовать в разное время. Состоят такие системы из producer'а (отправителя) и consumer'a (получателя) которые взаимодействуют между собой через broker.

Используя такие системы можно существенно увеличить производительность приложения, выполняя код в асинхронном режиме. Допустим у вас есть код который очень замедляет выполнение какой то части на вашем сайте, чтобы пользователь не ждал завершение работы такого кода, лучше его выполнить в асинхронном режиме. Несколько простых примеров:
— генерация thumbnails;
— сбор статистики;
— рассылка писем/сообщений;
— удаление данных с таблиц;
— индексация данных;
— импорт данных в базу.

Таких примеров может быть много, думаю, каждый может найти часть кода у себя в проекте, который можно вынести для выполнения в асинхронном режиме.
Читать дальше →
Всего голосов 9: ↑9 и ↓0+9
Комментарии4

Ближайшие события

Интервью с DHH (создателем Rails)

Время на прочтение2 мин
Количество просмотров2.1K
25 июля twit.tv провели интервью с David Heinemeier Hansson (для непосвященных — создателем Rails).

Советую его послушать самому, если с английским нет проблем, а я законспектировал на русском основные мысли про Ruby и Ruby on Rails.
Читать дальше →
Всего голосов 43: ↑36 и ↓7+29
Комментарии110

ActiveRecord vs SQL

Время на прочтение2 мин
Количество просмотров7.8K

Привет, %username%!


Недавно я начал изучать Ruby on Rails и передо мной встала задача — реализовать импорт данных из CSV файла в MySQL таблицу. Задача не сложная и код я написал довольно быстро, но вот только я был очень удивлен тем, что пока он выполнялся, я успел налить себе кофе и выкурить сигарету.

— Что-то здесь не так! — подумал я и начал копать.
Читать дальше →
Всего голосов 42: ↑33 и ↓9+24
Комментарии49

Обрезаем фото в стиле «ВКонтакте»

Время на прочтение3 мин
Количество просмотров17K
image
В этом HOWTO я раскажу вам как обрезать фотографию до нужного вам размера и залить её на сервер с помощью Ruby on Rails.
Читать дальше →
Всего голосов 69: ↑58 и ↓11+47
Комментарии25

RSpec. Часть #1: создаем тесты для модели

Время на прочтение3 мин
Количество просмотров38K
Как и обещал, я начинаю цикл статей, на тему RSpec.

В этой статье, я постараюсь, подробно рассказать, как писать тесты для моделей в Ruby on Rails. Если вы уже знакомы с rspec_on_rails, поправьте и дополните меня, если что то не так. Помните, что я изучаю Rspec вместе с вами и могу где то ошибаться.
Читать дальше →
Всего голосов 20: ↑16 и ↓4+12
Комментарии12

использование JSON в Ruby on Rails, плюс пример var_dump на Javascript

Время на прочтение2 мин
Количество просмотров6.5K
В этой статье я поведаю тебе %username%, как работать с JSON, а так же как вывести дамп любой переменной javascript для дебага.

Сначала немного теории. И так, основываясь на определение взятом с Wikipedia.
JSON — это текстовый формат обмена данными, основанный на JavaScript и обычно используемый именно с этим языком. Как и многие другие текстовые форматы, JSON легко читается людьми.
Читать дальше →
Всего голосов 12: ↑5 и ↓7-2
Комментарии9

3 простых совета, которые сделают ваше Rails приложение быстрее, часть #3

Время на прочтение2 мин
Количество просмотров2.2K
Читать дальше →
Всего голосов 17: ↑12 и ↓5+7
Комментарии9

3 простых совета, которые сделают ваше Rails приложение быстрее, часть #2

Время на прочтение1 мин
Количество просмотров1.4K
  Продолжаем оптимизировать наши приложения написанные на Ruby on Rails. Первая часть статьи здесь
Совет #1: Приберите ваш статический контент
Совет #2: Уберите все лишнее
Совет #3: Кэшируйте всю страницу
Читать дальше →
Всего голосов 20: ↑18 и ↓2+16
Комментарии13

Вклад авторов

Работа

Ruby on Rails
5 вакансий