40
GEMAS DE RUBY ON RAILS QUE PUEDEN SALVAR TU DÍA 7 Francisco Luis Aranda García @flaranda

7 Gemas de Ruby on Rails que podrían salvarte el dia

Embed Size (px)

Citation preview

Page 1: 7 Gemas de Ruby on Rails que podrían salvarte el dia

GEMAS DE RUBY ON RAILSQUE PUEDEN SALVAR TU DÍA7Francisco Luis Aranda García

@flaranda

Page 2: 7 Gemas de Ruby on Rails que podrían salvarte el dia

Ruby on Rails

Page 3: 7 Gemas de Ruby on Rails que podrían salvarte el dia

Ruby on Rails

Page 4: 7 Gemas de Ruby on Rails que podrían salvarte el dia

devise#1

Page 5: 7 Gemas de Ruby on Rails que podrían salvarte el dia

devise plataformatec / devise

Sistema de autenticación basado en Rack !

Solución ideal para MVC !

“Usa solo lo que necesites”

Page 6: 7 Gemas de Ruby on Rails que podrían salvarte el dia

devise plataformatec / devise

10 módulos principales

Authenticable !

Omniauthable !

Confirmable !

Recoverable !

Registerable

Rememberable !

Trackable !

Timeoutable !

Validatable !

Lockable

Page 7: 7 Gemas de Ruby on Rails que podrían salvarte el dia

devise plataformatec / devise

Preparar devise en una web app

gem install devise123

rails generate devise:install

rails generate devise MODEL_NAME

Page 8: 7 Gemas de Ruby on Rails que podrían salvarte el dia

devise plataformatec / devise

Prueba

Page 9: 7 Gemas de Ruby on Rails que podrían salvarte el dia

cancancan#2

Page 10: 7 Gemas de Ruby on Rails que podrían salvarte el dia

cancancan CanCanCommunity / cancancan

Módulo de autorizaciones para Rails !

Basado en un modelo independiente “Ability” !

Integración con devise para saber quién es “user”

Page 11: 7 Gemas de Ruby on Rails que podrían salvarte el dia

cancancan CanCanCommunity / cancancan

Preparar cancancan en una web app

gem install cancancan12 rails generate cancan:ability

Page 12: 7 Gemas de Ruby on Rails que podrían salvarte el dia

cancancan CanCanCommunity / cancancan

class Ability include CanCan::Ability ! def initialize(user) if user.admin?! can :manage, :all elsif user.client? can :read, :all can :manage, Article do |article| user.articles.include? article end end end end

Page 13: 7 Gemas de Ruby on Rails que podrían salvarte el dia

cancancan CanCanCommunity / cancancan

class ApplicationController < ActionController::Base rescue_from CanCan::AccessDenied do |exception| redirect_to root_url, :alert => exception.message end end

Page 14: 7 Gemas de Ruby on Rails que podrían salvarte el dia

cancancan CanCanCommunity / cancancan

<% if can? :update, @article %> <%= link_to "Edit", edit_article_path(@article) %> <% end %>

Page 15: 7 Gemas de Ruby on Rails que podrían salvarte el dia

acts_as_api#3

Page 16: 7 Gemas de Ruby on Rails que podrían salvarte el dia

acts_as_api fabrik42 / acts_as_api

Interfaz para representaciones de modelos !

Parsear a JSON fácil y rápido !

Plantillas de inclusión de información

Page 17: 7 Gemas de Ruby on Rails que podrían salvarte el dia

acts_as_api fabrik42 / acts_as_api

Preparar acts_as_api en una web app

gem install acts_as_api12 Modificar nuestros modelos al gusto

Page 18: 7 Gemas de Ruby on Rails que podrían salvarte el dia

acts_as_api fabrik42 / acts_as_api

class User < ActiveRecord::Base acts_as_api ! field :first_name field :last_name field :age field :email field :password ! api_accessible :public do |template| template.add :first_name template.add :age end # will render json: { "user": { "first_name": "John", "age": 26 } } end

Page 19: 7 Gemas de Ruby on Rails que podrían salvarte el dia

acts_as_api fabrik42 / acts_as_api

class UsersController < ApiController def index @users = User.all respond_with @users, api_template: :public end end

Page 20: 7 Gemas de Ruby on Rails que podrían salvarte el dia

kaminari#4

Page 21: 7 Gemas de Ruby on Rails que podrían salvarte el dia

kaminari plataformatec / devise

Paginación a nivel backend !

Muchas configuraciones posibles

Page 22: 7 Gemas de Ruby on Rails que podrían salvarte el dia

kaminari plataformatec / devise

Preparar kaminari en una web app

gem install kaminari1

Page 23: 7 Gemas de Ruby on Rails que podrían salvarte el dia

kaminari plataformatec / devise

User.page(7).per(50)

Page 24: 7 Gemas de Ruby on Rails que podrían salvarte el dia

kaminari plataformatec / devise

class UsersController < ApplicationController def index @users = User.all.per(params[:per]).page(params[:page]) respond_with @users end end

GET /users?per=25&page=1

Page 25: 7 Gemas de Ruby on Rails que podrían salvarte el dia

factory_girl_rails#5

Page 26: 7 Gemas de Ruby on Rails que podrían salvarte el dia

factory_girl_rails thoughtbot / factory_girl_rails

Integración para Rails de ‘factory_girl’ !

Factoría de entidades de modelos !

Ideal para tests

Page 27: 7 Gemas de Ruby on Rails que podrían salvarte el dia

factory_girl_rails thoughtbot / factory_girl_rails

Preparar factory_girl_rails en una web app

gem install factory_girl_rails1

Page 28: 7 Gemas de Ruby on Rails que podrían salvarte el dia

factory_girl_rails thoughtbot / factory_girl_rails

FactoryGirl.define do sequence :email do |n| "user#{n}@email.com" end ! sequence :contact_name do |n| "Antonio#{n}" end end

Page 29: 7 Gemas de Ruby on Rails que podrían salvarte el dia

factory_girl_rails thoughtbot / factory_girl_rails

FactoryGirl.define do factory :user do email contact_email password “foobarfoo” end end

FactoryGirl.create_list( :user, 50 )

FactoryGirl.create( :user )

Page 30: 7 Gemas de Ruby on Rails que podrían salvarte el dia

letter_opener#6

Page 31: 7 Gemas de Ruby on Rails que podrían salvarte el dia

Visualización de emails en el explorador !

Los emails aparecen como popups

letter_opener ryanb / letter_opener

Page 32: 7 Gemas de Ruby on Rails que podrían salvarte el dia

letter_opener ryanb / letter_opener

Preparar letter_opener en una web app

gem install letter_opener12 En config/environments/development.rb

config.action_mailer.delivery_method = :letter_opener

Page 33: 7 Gemas de Ruby on Rails que podrían salvarte el dia

letter_opener ryanb / letter_opener

Prueba no disponible!!

:(

Page 34: 7 Gemas de Ruby on Rails que podrían salvarte el dia

delayed_job#7

Page 35: 7 Gemas de Ruby on Rails que podrían salvarte el dia

Ejecución asíncrona de métodos !

Ejecución en segundo plano !

Calendarización de tareas

delayed_job collective idea / delayed_job

Page 36: 7 Gemas de Ruby on Rails que podrían salvarte el dia

delayed_job collective idea / delayed_job

Preparar delayed_job en una web app

gem install delayed_job_active_record123

Si se usa Active Record: rails generate delayed_job:active_record

gem install delayed_job_mongoid

En config/application.rb: config.active_job.queue_adapter = :delayed_job

Page 37: 7 Gemas de Ruby on Rails que podrían salvarte el dia

delayed_job collective idea / delayed_job

@user.activate!(@device) !

@user.delay.activate!(@device)

Page 38: 7 Gemas de Ruby on Rails que podrían salvarte el dia

delayed_job collective idea / delayed_job

def future puts “Future is here!” end !handle_asynchronously :future, run_at: Proc.new { 5.minutes.from_now }

Page 39: 7 Gemas de Ruby on Rails que podrían salvarte el dia

Ruby on Rails

Page 40: 7 Gemas de Ruby on Rails que podrían salvarte el dia

Gracias_ !

:)