Обновлено Ruby и Rails


Был выпущен Ruby 2.2.0, а также Rails 4.2 Улучшения в Rails включают новую платформу активных заданий, которая включила поддержку отправки асинхронной почты, более быстрые запросы, веб-консоль и лучшую обработку внешних ключей.  

Объявление о Rails 4.2  описывает его как:

“полный замечательных игрушек, полезных вещиц и отполированных краев, любезно предоставленных фантастическим сообществом веселых эльфов, которые в течение нескольких месяцев кодировали с веселым ликованием” 

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

Платформа активных заданий-это уровень адаптера поверх систем массового обслуживания, таких как Resque, Отложенное задание, Sidekiq и другие. Вы можете записать свои задания в Активное задание, и они будут выполняться во всех этих очередях без изменений.

Наличие всегда настроенной очереди означает, что теперь можно отправлять электронные письма Action Mailer асинхронно, поэтому разработчики добавили метод #deliver_later, который позволяет добавлять электронную почту для отправки в качестве задания в очередь, чтобы вы не зависали с контроллером или моделью.

Новая библиотека globalId позволяет легко передавать активные объекты записей в задания, сериализуя их в универсальной форме. Это означает, что вам больше не нужно вручную упаковывать и распаковывать активные записи, передавая идентификаторы. Просто дайте заданию прямой объект AR, и он сериализует его с помощью globalId и десериализует его во время выполнения.

Более быстрые запросы поступают из проекта улучшения под названием «Адекватная запись для активной записи», который заставляет многие распространенные запросы выполняться в два раза быстрее, чем в предыдущей версии.

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

Поддержка внешних ключей-это еще одна область, которая была улучшена; в более ранних версиях это было проблематично, но теперь вы можете использовать внешние ключи без проблем, по словам разработчиков. DSL миграции получает add_foreign_key и remove_foreign_key, а стандартный дампер schema.rb будет поддерживать поддержание этих объявлений. Единственное ограничение заключается в том, что в настоящее время он работает только с адаптерами MySQL и PostgreSQL.

В настоящее время ведется работа над Rails 5.0, и она будет нацелена исключительно на Ruby 2.2+. Текущая цель выпуска Rails 5.0-осень 2015 года. Тот факт, что Rails 5 будет ожидать Ruby 2.2+, увеличивает важность выпуска Ruby 2.2.0.

С практической точки зрения, одним из наиболее полезных улучшений новой версии Ruby является тот факт, что сборщик мусора теперь может собирать объекты типа символов, тем самым уменьшая объем памяти, используемой символами – до этой версии сборщик мусора не мог собирать символы. Rails 5.0 потребует символьного GC, что является одной из основных причин, по которой он будет поддерживать только Ruby 2.2 или более позднюю версию.

Инкрементный GC также означает сокращение времени паузы, и это еще одна область, которой, вероятно, воспользуется Rails 5. Еще одной функцией, связанной с управлением памятью, является дополнительная опция для configure.in чтобы использовать функцию jemalloc #9113 (malloc libc-это проблема, он плохо фрагментируется, что означает, что вилки используют меньше памяти и работают медленно по сравнению с tcmalloc или jemalloc.). Эта функция все еще является экспериментальной и в настоящее время отключена по умолчанию, но как только разработчики будут довольны ею, эта функция будет включена по умолчанию.

Также была добавлена экспериментальная поддержка использования vfork(2) с system() и spawn (). Это потенциально может привести к значительному повышению производительности, когда большой процесс выполняет внешние команды много раз, но разработчики все еще экспериментируют.

Другие улучшения обновили библиотеки в комплекте, Psych 2.0.8, Rake 10.4.2, RDoc 4.2.0 и RubyGems 2.4.5.


Добавить комментарий