- PVSM.RU - https://www.pvsm.ru -

Вышли Rails 4.1 beta1

Не так давно, 18 декабря, состоялся релиз [1] очередной версии Rails. Забавно, что существует пост [2], датированный 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 [3]).

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 приводится следующий пример [4] (я немножко изменил его):

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 [5]: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

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

Заключение

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

Автор: HedgeSky

Источник [6]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/ruby-on-rails/51486

Ссылки в тексте:

[1] состоялся релиз: http://weblog.rubyonrails.org/2013/12/18/Rails-4-1-beta1/

[2] существует пост: http://coherence.io/blog/2013/12/17/whats-new-in-rails-4-1.html

[3] параллельный bunlder: http://robots.thoughtbot.com/parallel-gem-installing-using-bundler

[4] следующий пример: http://edgeguides.rubyonrails.org/4_1_release_notes.html#action-pack-variants

[5] localhost: http://localhost

[6] Источник: http://habrahabr.ru/post/207172/