На 16 марта запланирован релиз Rails 5.0, самое время разобраться, что же нового и вкусного будет в новой версии рельсов (кроме нового логотипа и дизайна их официального сайта, я имею в виду).
![image](https://habrastorage.org/getpro/habr/post_images/f52/c36/a59/f52c36a5909a9d619c671c031c501563.png)
Изначально релиз Rails 5.0 был запланирован на весну 2015 года и много раз сдвигался, последний раз с 23 февраля на 16 марта 2016. То есть, возможно, это не последний перенос сроков. Тем не менее, Rails 5.0 на сегодня имеет статус beta3 и работает на продакшене Basecamp
Текущая версия turbolinks обновляет содержимое всей страницы через ajax без повторного обращения к статическим файлам css,js и т.д. Новая же версия позволяет выборочно изменять содержимое отдельных частей веб-страницы (через partials), причем делать это можно по инициативе сервера.
Наконец-то реализована поддержка Websockets, теперь можно делать полноценные single page application без танцев с бубном. Каналы, подписчики к ним на стороне клиента и так далее. Очень удобно.
Прекрасный видео туториал об использовании Action Cable – веб чат на Rails без обновления страницы.
Теперь есть возможность сделать приложение без HTML и JS частей по умолчанию – существенно быстрее и легче.
Создается приложение, которое сразу cконфигурировано для работы с JSON, а не HTML
Добавлен файл app/assets/config/manifest.js для управления прекомпиляцией статических файлов.
Еще обсуждается его конечно расположение и формат (js или yml), с финальным релизом будет понятно.
Его на самом деле много, как много и мелких изменений, но мне приглянулись вот эти несколько:
Обещают 20-30% прироста производительности. Как я понял, в основном, за счет массового использования замороженных строк (и массовой оптимизации кода, конечно же).
http://blog.michelada.io/whats-new-in-rails-5
https://medium.com/evil-martians/the-rails-5-post-9c76dbac8fc#.9p0fpry5o
Самый новый видео подкаст об изменениях (с примерами)
![image](https://habrastorage.org/getpro/habr/post_images/f52/c36/a59/f52c36a5909a9d619c671c031c501563.png)
Изначально релиз 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 5
Текущая версия 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
Самый новый видео подкаст об изменениях (с примерами)
Комментарии (9)
Gambala
10.03.2016 19:49+5Новая же версия позволяет выборочно изменять содержимое отдельных частей веб-страницы
Turbolinks 3 отныне — deprecated, доступна здесь: https://github.com/turbolinks/turbolinks-classic
Официальная версия — Turbolinks 5, без partial-апдейтинга: https://github.com/turbolinks/turbolinks
HomoLuden
10.03.2016 21:33+1Упоминули про API режим, но не упоминули про CORS, а этот вопрос автоматически встает для режима API.
Теперь gem CORS стал частью Rails.printercu
10.03.2016 22:11+1Вроде бы ничего такого нет, просто предлагают поставить гем для режима апи: https://github.com/rails/rails/search?utf8=%E2%9C%93&q=cors
Fedcomp
11.03.2016 11:35+1объекты с отношением belongs_to теперь по умолчанию должны иметь родителя, иначе будет exception
Вот это очень спорное решение. Интересно has_many будет также работать?printercu
11.03.2016 14:59Всё не так. Никаких эксепшенов, обычные ошибки валидации (конечно, если не бэнг-методы). Просто по-умолчанию
required: true
, да и можно поменять это значение сRails.application.config.active_record.belongs_to_required_by_default
.
https://github.com/rails/rails/blob/master/activerecord/lib/active_record/associations/builder/belongs_to.rb#L126-L136
printercu
Что-то, похоже, релиз 16-го отменяется. Обещали RC1 1-го марта, но его нет.