What's new in Rails 4.1

Post on 12-Sep-2014

1,323 views 1 download

Tags:

description

 

transcript

What’s new in

4.1(Chennai.rb March meetup)

(@vysakh0)

Vysakh SreenivasanJust want to build cool apps for me and

others

- Rails app probably take around ~5 seconds to boot.

- 50 times a day (test, rails s, rails g...)

i.e You waste 5 days in a YEAR

#1 Spring preloaderbuilt in integration in Rails 4.1

keeps app running in the background

No booting every time you run a test, rake task or migration

PARTY IN THOSE 5 DAYS

How do you load api keys in Rails?

- create .yml, .rb file and load or

- figaro gem or

- dotenv gem.

#2 config/secrets.ymlgenerated by Rails 4.1

Just put your api keys in secrets.yml# config/secrets.yml

development: facebook_consumer_key: “random skdfjks” facebook_consumer_secret: “its a secret”

# config/secrets.yml

development: facebook_consumer_key: “random key” facebook_consumer_secret: “its a secret”

# config/initializers/devise.rb …..

config.omniauth :facebook, Rails.application.secrets.facebook_consumer_key , Rails.application.secrets.facebook_consumer_secret

…..

Just use it like this

Config

How do you change the state of Order

- to pending.- to completed.- to refunded

Create separate columns?- completed(:boolean) , refunded(:boolean)

Create an integer column?- 0 -> pending- 1 -> completed- 2-> refunded

#3 Active Record enumsin Rails 4.1

# app/modes/order.rbclass Order < ActiveRecord::Base# status is an integer column in orders table enum status: { pending: 0, completed: 1, refunded: 2 }end

Now enum gives ushandy helper methods

@order.pending?

@order.completed!

@order.completed?

@order.refunded!

@order.refunded?

#4 Application Message Verifier

built in helper in Rails 4.1

irb> @user.id # => 1

irb> user_token = Rails.application.message_verifier(“remember_me”). generate(@user.id) => "BAhpBg==--859750a419640d18d7c24e3166541a9405a42786"

irb> get_back_user_id = Rails.application.message_verifier(“remember_me”). verify(user_token)

=> 1

USE CASES- Password reset

- Invite links

- Oauth tokens

- and more

Show different templates to

phone/browsers/tablets ?

#5 Application Pack Variants(Code example taken from

http://coherence.io/blog/2013/12/17/whats-new-in-rails-4-1.html )

class ApplicationController < ActionController::Base

before_action :detect_device_variant

private

def detect_device_variant

case request.user_agent

when /iPad/i

request.variant = :tablet

when /iPhone/i

request.variant = :phone

end

end

end

class PostController < ApplicationController

def show

@post = Post.find(params[:id])

respond_to do |format|

format.json

format.html # /app/views/posts/show.html.erb

format.html.phone # /app/views/posts/show.html+phone.erb

format.html.tablet do

@show_edit_link = false

end

end

end

end

#6 Application Mailer Previews

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

# test/mailers/notifier_preview.rb

List of all mailer previews

http://localhost:3000/rails/mailers