Рубрика «ruby on rails» - 32

Мы рады сообщить, что вчера вышла новая версия интегрированной среды разработки для Ruby и Rails — RubyMine 5, которую можно загрузить с нашего сайта.
Состоялся релиз RubyMine 5
В новой версии мы постарались добавить новые возможности, которые позволят получить удовольствие от разработки на Ruby во всем ее многообразии. Уже хорошо зарекомендовавшие себя инструменты разработки теперь доступны для еще большего числа Ruby-приложений, в том числе и для iOS-приложений на базе технологии RubyMotion, быстро набирающей популярность. Для приложений RubyMotion стали доступны интеллектуальное автодополнение кода, тестирование и отладка с использованием графического интерфейса.

Более подробно о RubyMine 5 можно узнать на странице What’s new. Также мы рады представить демо-видео от технического евангелиста Джона Линдквиста (John Lindquist).
Читать полностью »

Первые жертвы критических уязвимостей Rails: RubyGems.org подвергся хакерской атакеНе успело Rails сообщество оправится от последних критических уязвимостей с YAML парсингом, как злоумышленники нанесли удар по святому — RubyGems.org(wiki) подвергся хакерской атаке, через выше описанные уязвимости. Как минимум один зловредный гем был залит на RubyGems, который потенциально имел доступ к чувствительной информации, включая права на манипулирование гемами.
Читать полностью »

Тонкости Rails 4 — Turbolinks

Гем под названием Turbolinks способен неплохо ускорить ваше приложение, используя JavaScript для обновления контента на странице. Он включен по умолчанию в Rails 4, но я покажу, как можно использовать его уже сейчас в программах, написанных на Rails 3. Также вы узнаете о некоторых подводных камнях.
Читать полностью »

Во-первых, нужно сказать «спасибо» автору этого руководства. Без него я бы долго ещё не сел за написание сего поста: кучу проблем пришлось бы решать самостоятельно. Однако в моём случае ситуация была чуть другая (не Debian, а FreeBSD), да и вопрос с автозапуском unicorn остался открытым. Встречавшиеся мне на просторах интернета решения на изящество тоже не претендовали: делать по службе на веб-приложение — моветон. Во FreeBSD эта проблема решается на первый взгляд просто — созданием «метаслужб», позволяющих запускать более одного экземпляра (в качестве примера — FreeBSD jails). Однако, как это часто бывает, есть нюансы…
Читать полностью »

Приветствую!

Рад сообщить, что в прошедшие выходные, после долгого затишья, состоялся релиз моей небольшой, но смею надеяться, полезной поделки — гема TheSortableTree (rails 3, rails 4).

TheSortableTree — это гем, который помогает организовать отрисовку Nested Set деревьев. Но самое главное то, что он позволяет легко и просто управлять вашим Nested Set деревом с помощью удобного перетаскивания элементов в нужное место.

image

В текущей версии гема решена самая главная проблема — скорость отрисовки. Раньше она была чудовищно медленной. Сейчас (в среднем) можно получить скорость отрисовки 1500-2000 узлов в секунду. Я считаю эту скорость приемлемой и достаточной для большинства прикладных нужд.

Ниже (если вам интересно) немного истории создания гема, благодарности, планы, и рассказ о том, как на open source проекты влияет распитие крепкого черного чая вечером после работы.

P.S:

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

Читать полностью »

Тонкости Rails 4 — Cache Digests

Гем под названием "cache_digests" (включен по умолчанию в Rails 4) автоматически добавляет цифровую подпись к каждому фрагментному кэшу, основываюсь на представлении (вьюхе). При этом, если страница изменяется, то старый кэш автоматически удаляется. Но остерегайтесь подводных камней!
Читать полностью »

Эта статья для тех, кто хочет ускорить запуск рельс, а заодно ускорить работу интерпретатора ruby.
О том как установить RVM (Ruby version manager) уже написано много статей, поэтому я перейду сразу к делу.
Список патчей в RailsExpress для Ruby 1.9.3-p362
(это последняя версия руби на момент написания статьи)

Applying patch railsexpress/01-fix-make-clean.patch
Applying patch railsexpress/02-railsbench-gc.patch
Applying patch railsexpress/03-display-more-detailed-stack-trace.patch
Applying patch railsexpress/04-fork-support-for-gc-logging.patch
Applying patch railsexpress/05-track-live-dataset-size.patch
Applying patch railsexpress/06-webrick_204_304_keep_alive_fix.patch
Applying patch railsexpress/07-export-a-few-more-symbols-for-ruby-prof.patch
Applying patch railsexpress/08-thread-variables.patch
Applying patch railsexpress/09-faster-loading.patch
Applying patch railsexpress/10-falcon-st-opt.patch
Applying patch railsexpress/11-falcon-sparse-array.patch
Applying patch railsexpress/12-falcon-array-queue.patch

Читать полностью »

Вкратце: Rails 2,3 и 4 приложения подвержены выполнению произвольного кода(RCE) без исключения. Шел, чтение и очистка базы данных, все что душе угодно.
Читать полностью »

У нас тут в rails комьюнити опять драма.
Есть методы типа find_by_* которые проецируются на модели в find_by_title например и find_by_id.
Их можно использовать так
find_by_id(params[:id], select: «CUSTOM SQL»)
Но обычно их используют вот так
find_by_id(params[:id])
И происходит SQL Injection если в params[:id] лежит {:select => «CUSTOM SQL»}. Обратите внимание — :select это символ а не «select»(строка). Это значит что трюк ?id[select]=SQL не пройдет т.к. ключ окажется строкой.
И вообще params это хеш типа HashWithIndifferentAccess. Те у него ВПРИНЦИПЕ не может быть символов в ключах т.к. они все уничтожаются при создании.
Есть такой gem authlogic, в общем виде он использует find_by_token(token) где token это объект из сессии(которая хранится в куках и подписана session_secret). Чтобы в него записать :select => «SQL» вам нужно знать session_secret, поэтому уязвимость крайне редкая.
Весь этот SQL Injection CVE не стоит выеденного яйца! И ради чего пост? DDoS!
Читать полностью »

Markdown разметка в RubyOnRails приложении
В одном новом проекте, написанном на ruby on rails, была поставлена задача дать возможность пользователю использовать markdown-разметку для форматирования текста. Один из вариантов реализации описан в данной статье.
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js