Как стать автором
Поиск
Написать публикацию
Обновить

Вышли Rails 4.1 beta1

Время на прочтение3 мин
Количество просмотров6.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 уже использует эту версию. Думаю, что свой небольшой личный проектик я запущу именно на этой версии фреймворка.
Теги:
Хабы:
Всего голосов 22: ↑20 и ↓2+18
Комментарии14

Публикации

Ближайшие события