Вышли Rails 4.1 beta1

в 10:52, , рубрики: ruby on rails, метки:

Не так давно, 18 декабря, состоялся релиз очередной версии Rails. Забавно, что существует пост, датированный 17-м декабря, и ссылающийся на статью из будущего. Из очередных полезностей новой версии:

  • Ускорение загрузки с помощью Spring
  • Единое место для хранения разнообразных ключей API, секретов и прочего: config/secrets.yml
  • Предпросмотр email'ов: Action Mailer Previews
  • Удобная генерация различного контента в зависимости от конкретного request с помощью Action Pack Variants
  • Добавление enum-атрибутов в Active Record

Установка

Чтобы прицениться к новой версии рельс, для начала ее нужно установить. Так как беты нет на rubygems.org, устанавливать будем прямо с github-репозитория. Для этого в нужной директории создадим Gemfile со следующим содержимым:

source 'http://rubygems.org'
gem 'rails', :git => 'git://github.com/rails/rails.git'

После этого в консоли:

bundle # сокращение для bundle install
rails new ./

Соглашаемся с перезаписью гемфайла, и ждем установки всех зависимостей (кстати, если вас не устраивает слишком долгое время bundle, можно попробовать параллельный bunlder).

Spring

Spring — это гем, служащий для ускорения загрузки Rails-окружения. После первоначальной загрузки ваше приложение крутится где-то в фоне, сильно ускоряя загрузку всех команд, требующих загрузки Rails: прогона миграций, запуска консоли и, конечно же, тестов. Крайне радостной для меня новостью стало внедрение Spring в сами рельсы. Проверьте сами: rails c; exit; rails c. Повторный запуск происходит практически мгновенно, что не может не радовать.

config/secrets.yml

Теперь секретные ключи стоит хранить в этом файле, и получать к ним доступ с помощью Rails.application.secrets. Пример config/secrets.yml:

development:
  secret_key_base: '3b7cd727ee24e8444053437c36cc66c3'
  some_api_key: 'SOMEKEY'

Action Pack Variants

Данная функциональность пригодится в том случае, если нам необходимо рендерить разные представления в зависимости от различных характеристик запроса. В release_notes приводится следующий пример (я немножко изменил его):

before_action :set_variants

def show
  respond_to do |format|
    format.html.tablet # renders app/views/projects/show.html+tablet.erb
    format.html.phone  { extra_setup;  render ... }
  end
end

private
  def set_variants
    request.variant = :tablet if request.user_agent =~ /iPad/
    request.variant = :phone if request.user_agent =~ /iPhone/
  end

Это требует дополнительных файлов представлений:

app/views/projects/show.html.erb
app/views/projects/show.html+tablet.erb
app/views/projects/show.html+phone.erb

Action Mailer Preview

Теперь не нужно отправлять письмо самому себе, чтобы посмотреть, как оно отформатировано (или, быть может, я один отправлял его себе, а все крутые сеньоры давным давно используют спец. инструменты?). Допустим, у нас есть следующий mailer:

class NotifierPreview < ActionMailer::Preview
  def welcome
    Notifier.welcome(User.first)
  end
end

Тогда предпросмотр будет доступен по адресу localhost:3000/rails/mailers/notifier/welcome.

Active Record enums

Пример, выложенный в release_notes, очень радует мой взор:

# Declare an enum attribute where the values map to integers in the database, but can be queried by name.
class Conversation < ActiveRecord::Base
  enum status: [ :active, :archived ]
end
 
conversation.archived!
conversation.active? # => false
conversation.status  # => "archived"
 
Conversation.archived # => Relation for all archived Conversations

Ложка дегтя: ссылка на документацию битая, но достаточно подробно тема в уже упомянутой выше статье.

Заключение

DHH вдохновляет нас на использование Rails 4.1.0 beta заявлением, что Basecamp уже использует эту версию. Думаю, что свой небольшой личный проектик я запущу именно на этой версии фреймворка.

Автор: HedgeSky

Источник

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


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