A Study in Devise

24

Transcript of A Study in Devise

Page 1: A Study in Devise
Page 2: A Study in Devise

What is Devise

• Flexible authentication solution for Rails with Warden by Plataformatec

• A gem I’ve used for a long long time

• A gem that still mystify us (don’t they all)

Page 3: A Study in Devise
Page 4: A Study in Devise
Page 5: A Study in Devise

Magic much?

Page 6: A Study in Devise

Purpose

• Learn how to dig deep

• Learn how gems are built

• Pick up some tips & tricks

Page 7: A Study in Devise

Study Area

• Basic building blocks

• Generators

• Routing

• Modules

Page 8: A Study in Devise

Basic Building Blocks• warden - Rack based Auth framework

• orm_adapter - For DB connections

• bcrypt - For password encryption

• railties - For Rails generator & stuffs

• responders - respond_with + respond_to helpers

Page 9: A Study in Devise

Responders• respond_with + respond_to Controller helpers

• separated from Rails after 4.2.0

Page 10: A Study in Devise

Warden

Page 11: A Study in Devise
Page 12: A Study in Devise

Demo

Page 13: A Study in Devise

Generators

• lib/generators/active_record

• lib/generators/devise

• lib/generators/mongoid

• lib/generators/templates

Page 14: A Study in Devise
Page 15: A Study in Devise

Devise Routes

• lib/devise/rails/routes.rb

• def devise_for

Page 16: A Study in Devise

Look at Code

Page 17: A Study in Devise

Array#extract_options!

Page 18: A Study in Devise

Route Contraints

• http://api.rubyonrails.org/classes/ActionDispatch/Routing/Mapper/Scoping.html#method-i-constraints

• devise_scope

Page 19: A Study in Devise

Devise::Mapping

• lib/devise/mapping.rb

• Stores all information about a certain mapping (devise_for object)

Page 20: A Study in Devise

Modules• Database

Authenticable

• Omniauthable

• Confirmable

• Recoverable

• Registrable

• Rememberable

• Trackable

• Timetable

• Validatable

• Lockable

Page 21: A Study in Devise

Look at Code

Page 22: A Study in Devise

Modules

• lib/devise/models.rb

• def devise(*modules)

Page 23: A Study in Devise

Splat Operator (*)

Page 24: A Study in Devise

Q&A