Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Отправка файла пользователю — обычно статические файлы передаются по прямому УРЛу в обход рельсового приложения. Тем не менее в ряде ситуаций может быть полезно спрятать расположение файла, особенно если вы посылаете что-либо ценное, наподобии е-книги. Может также требоваться ограничить посылку файлов только залогиненным пользователям. Проблему решает send_file. Файлы передаются по 4096 байтов, так что даже большие файлы систему не затормозят.
Запуск длинных процессов отдельно в фоне — есть небольшой фреймворк BackgrounDRbот Эзры Зигмунтовича (Ezra Zygmuntovich), который запускается в виде демона и принимает задачи от рельсового приложения, и выполняет их независимо. Мощная вещь, помогает в рассылке писем, получении УРЛов, и прочего, что может затормозить время выполнения запроса основного приложения. Демо-таск увеличивает переменную на 1, после чего делает sleep на 1 секунду. Далее делаем рельсовый метод, который опрашивает эту переменную, и чувствуем разницу.
Выборка элементов страницы через RJS — поменять элемент в RJS нетрудно, но что если мы не знаем, какой именно элемент надо менять, и хотели бы адресоваться через CSS-запрос? Это возможно с методом select. Например, page.select('#items li').each { |item| item.hide }. Мощная штука!
Проверка существования — при выполнении Model.find(id) мы получим исключение, если элемента «id» не нашлось. Чтобы это избежать, сперва выполняем Model.exists?(id), чтобы узнать, есть ли такой.
Исключение будет только на dev-среде. В prod-среде вернет nil.
to_param в свежих рельсах есть String#parameterize:Дальнейшее повышение производительности — по умолчанию рельсы записывают сессии на локальную файловую систему.
to_yaml не является рельсовым методом (методом ActiveSupport), а значит, на него не действуют соглашения методов to_xml и to_json (:only, :include) и прочие.
19 необщеизвестных приёмов