Что нового в Rails 5.0. Можно планировать переезд

в 12:35, , рубрики: rails 5, ruby, ruby on rails, Программирование

На 16 марта запланирован релиз Rails 5.0, самое время разобраться, что же нового и вкусного будет в новой версии рельсов (кроме нового логотипа и дизайна их официального сайта, я имею в виду).
image

Изначально релиз Rails 5.0 был запланирован на весну 2015 года и много раз сдвигался, последний раз с 23 февраля на 16 марта 2016. То есть, возможно, это не последний перенос сроков. Тем не менее, Rails 5.0 на сегодня имеет статус beta3 и работает на продакшене Basecamp

Сначала формальные изменения

  • Поддерживается только ruby 2.2.2+
  • Веб-сервер Webrick заменен на Puma на 16 потоков по умолчанию
  • Все rake команды заменены на rails, например: rails db:migrate

И большие куски функционала

Turbolinks 3

Текущая версия turbolinks обновляет содержимое всей страницы через ajax без повторного обращения к статическим файлам css,js и т.д. Новая же версия позволяет выборочно изменять содержимое отдельных частей веб-страницы (через partials), причем делать это можно по инициативе сервера.

Action Cable

Наконец-то реализована поддержка Websockets, теперь можно делать полноценные single page application без танцев с бубном. Каналы, подписчики к ним на стороне клиента и так далее. Очень удобно.

Прекрасный видео туториал об использовании Action Cable – веб чат на Rails без обновления страницы.

API режим

Теперь есть возможность сделать приложение без HTML и JS частей по умолчанию – существенно быстрее и легче.
rails new backend --api

Создается приложение, которое сразу cконфигурировано для работы с JSON, а не HTML

Sprockets 4

Добавлен файл app/assets/config/manifest.js для управления прекомпиляцией статических файлов.
// JS and CSS bundles
//
//= link_directory ../javascripts .js
//= link_directory ../stylesheets .css

// Images and fonts so that views can link to them
//
//= link_tree ../fonts
//= link_tree ../images

Еще обсуждается его конечно расположение и формат (js или yml), с финальным релизом будет понятно.

Немного сахара

Его на самом деле много, как много и мелких изменений, но мне приглянулись вот эти несколько:

  • params в контроллере больше не хэш, а объект
  • Теперь можно писать вот так: User.where(users[:name].eq(‘bob’).or(users[:age].lt(25)))
  • Мелкие методы Integer#positive? и Integer#negative?
  • объекты с отношением belongs_to теперь по умолчанию должны иметь родителя, иначе будет exception
Результат

Обещают 20-30% прироста производительности. Как я понял, в основном, за счет массового использования замороженных строк (и массовой оптимизации кода, конечно же).

Установка последней beta

git clone --depth 1 http://github.com/rails/rails
cd rails
bundle
railties/exe/rails new --edge appname
cd appname
bundle
bundle exec rails s
Почитать

http://blog.michelada.io/whats-new-in-rails-5
https://medium.com/evil-martians/the-rails-5-post-9c76dbac8fc#.9p0fpry5o
Самый новый видео подкаст об изменениях (с примерами)

Автор: k2m30

Источник


* - обязательные к заполнению поля


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