Ruby on Rails

В Rails можно создать очень хорошие веб-приложения, используя только стандартные методы и эти методы хороши описаны в книгах по Rails и на прасторах интернета. Однако, бывают моменты, когда нужны более продвинутые методы, для осуществления необходимой функциональности сервиса. Здесь будут рассмотрены продвинутые фичи Rails. В частности, рассматриваются, как осуществить наследование таблицы (Single table inheritance), как состыковывать несколько таблиц (Composition), и как осуществить транзакции (Transactions) в Ruby on Rails.  

Основное нововведение - это появление в составе фреймворка Active Job. Это адаптер для систем очередей - Resque, Delayed Job, Sidekiq и других. Теперь можно запускать свои задачи на любой из поддерживаемых систем без изменения своего кода.

Active Job будет использовать в rails везде где необходимо выполнять какие-то задачи асинхронно. Первое такое место это отправка емейлов. Теперь в ActionMailer появился метод #deliver_later который добавляет задачу на отправку письма в очередь.

Для удобной передачи объектов Active Record в задачу изпользуется библиотека GlobalID - благодаря чему вам не нужно в ручную сериализовать модель для передчи в задачу, а затем десериализовывать при выполнении задачи.

Хорошо подтянули производительность работы Active Record избавившись от лишних и дублирующих запросов.

Появилась web console - это полноценная IRB консоль в браузере. Она автоматически показывается на странице с исключением, так что теперь можно сразу посмотреть состояния кода которое привело к ошибке. Просто поиграться с консолью можно в режиме разработки перейдя на урл /console.

Подробнее о релизе можно почитать здесь http://weblog.rubyonrails.org/2014/8/20/Rails-4-2-beta1/.

На прошлой неделе на RailsConf объявили о первой предвыпускной версии rails 4.0. Это подходящий момент попытаться обновить собственные проекты до rails 4, чтобы понять, работают ли они и будут ли сообщения о каких-либо ошибках. В прошлом эпизоде episode 400 было много рассказано о новых фичах Rails 4, таким образом, этот эпизод будет сфокусирован на процессе обновления приложений написанные на Rails 3.2. Вы можете следовать этому указанию для собственных приложений.

Первым шагом необходимо удостоверится, что мы имеем последнею версию, Rails 3.2. и что все gem приложения также так же обновлены. Также мы должны иметь установленную Ruby 1.9.3 или более позднею версию. Необходимо также проверить, что наше приложение полностью проходят набор тестов перед началом обновления. Процесс обновления будет более затруднительным, если наше приложение не имеет автоматические тесты. Это означает, что потребуется больше времени на ручное тестирование. По крайней мере, вы должны добавить некоторые интеграционные тесты для вашего приложения перед началом обновления. Наше приложение прошло все тесты, мы можем начать обновление приложение на Rails 4. 

 

terminal
$ git checkout -b rails4
 

 

Подробнее: Перенос приложения с Rails 3 на Rails 4

Наследование  от единой таблицы базы данных

 

STI (Single Table Inheritance) позволяет перенести объектно-ориентированное наследование классов Active Record на таблицу реляционной базы данных. В STI класс и все его потомки используют одну таблицу базы данных. Так, например, пусть имеется базовый класс Book, тогда класс ComicBook (комикс книги), это потомок образцового класса Book, так как ComicBook — это один из типов книг. По мимо книг «комиксы», так же могут бы другие типы книг, например, учебники (TextBook). Класс TextBook, также является потомок от базового класса Book. С единственной наследованием таблицы, книги, комиксы и учебники были бы сохранены в одной таблице. На рисунке 1 показано, как классы и база данных должны быть вложены.

 

 

Рисунок 1. Наследования от единной таблицы
 
Подробнее: Наследование от единой таблицы базы данных
Яндекс.Метрика