Pull to refresh

Вышли Rails 4.1 beta1

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

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


Установка


Чтобы прицениться к новой версии рельс, для начала ее нужно установить:

gem install rails -v 4.1.0.beta1
rails new rails_beta_app

Ждем установки всех зависимостей и приступаем к изучению (кстати, если вас не устраивает слишком долгое время 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 уже использует эту версию. Думаю, что свой небольшой личный проектик я запущу именно на этой версии фреймворка.
Tags:
Hubs:
+18
Comments14

Articles