- PVSM.RU - https://www.pvsm.ru -
Не так давно, 18 декабря, состоялся релиз [1] очередной версии Rails. Забавно, что существует пост [2], датированный 17-м декабря, и ссылающийся на статью из будущего. Из очередных полезностей новой версии:
Чтобы прицениться к новой версии рельс, для начала ее нужно установить. Так как беты нет на 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 — это гем, служащий для ускорения загрузки Rails-окружения. После первоначальной загрузки ваше приложение крутится где-то в фоне, сильно ускоряя загрузку всех команд, требующих загрузки Rails: прогона миграций, запуска консоли и, конечно же, тестов. Крайне радостной для меня новостью стало внедрение Spring в сами рельсы. Проверьте сами: rails c; exit; rails c. Повторный запуск происходит практически мгновенно, что не может не радовать.
Теперь секретные ключи стоит хранить в этом файле, и получать к ним доступ с помощью Rails.application.secrets. Пример config/secrets.yml:
development:
secret_key_base: '3b7cd727ee24e8444053437c36cc66c3'
some_api_key: 'SOMEKEY'
Данная функциональность пригодится в том случае, если нам необходимо рендерить разные представления в зависимости от различных характеристик запроса. В 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
Теперь не нужно отправлять письмо самому себе, чтобы посмотреть, как оно отформатировано (или, быть может, я один отправлял его себе, а все крутые сеньоры давным давно используют спец. инструменты?). Допустим, у нас есть следующий mailer:
class NotifierPreview < ActionMailer::Preview
def welcome
Notifier.welcome(User.first)
end
end
Тогда предпросмотр будет доступен по адресу localhost [5]:3000/rails/mailers/notifier/welcome.
Пример, выложенный в 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/
Нажмите здесь для печати.