7 Gemas de Ruby on Rails que podrían salvarte el dia
-
Upload
francisco-aranda -
Category
Technology
-
view
320 -
download
2
Transcript of 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
Ruby on Rails
Ruby on Rails
devise#1
devise plataformatec / devise
Sistema de autenticación basado en Rack !
Solución ideal para MVC !
“Usa solo lo que necesites”
devise plataformatec / devise
10 módulos principales
Authenticable !
Omniauthable !
Confirmable !
Recoverable !
Registerable
Rememberable !
Trackable !
Timeoutable !
Validatable !
Lockable
devise plataformatec / devise
Preparar devise en una web app
gem install devise123
rails generate devise:install
rails generate devise MODEL_NAME
devise plataformatec / devise
Prueba
cancancan#2
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”
cancancan CanCanCommunity / cancancan
Preparar cancancan en una web app
gem install cancancan12 rails generate cancan:ability
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
cancancan CanCanCommunity / cancancan
class ApplicationController < ActionController::Base rescue_from CanCan::AccessDenied do |exception| redirect_to root_url, :alert => exception.message end end
cancancan CanCanCommunity / cancancan
<% if can? :update, @article %> <%= link_to "Edit", edit_article_path(@article) %> <% end %>
acts_as_api#3
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
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
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
acts_as_api fabrik42 / acts_as_api
class UsersController < ApiController def index @users = User.all respond_with @users, api_template: :public end end
kaminari#4
kaminari plataformatec / devise
Paginación a nivel backend !
Muchas configuraciones posibles
kaminari plataformatec / devise
Preparar kaminari en una web app
gem install kaminari1
kaminari plataformatec / devise
User.page(7).per(50)
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
factory_girl_rails#5
factory_girl_rails thoughtbot / factory_girl_rails
Integración para Rails de ‘factory_girl’ !
Factoría de entidades de modelos !
Ideal para tests
factory_girl_rails thoughtbot / factory_girl_rails
Preparar factory_girl_rails en una web app
gem install factory_girl_rails1
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
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 )
letter_opener#6
Visualización de emails en el explorador !
Los emails aparecen como popups
letter_opener ryanb / letter_opener
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
letter_opener ryanb / letter_opener
Prueba no disponible!!
:(
delayed_job#7
Ejecución asíncrona de métodos !
Ejecución en segundo plano !
Calendarización de tareas
delayed_job collective idea / delayed_job
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
delayed_job collective idea / delayed_job
@user.activate!(@device) !
@user.delay.activate!(@device)
delayed_job collective idea / delayed_job
def future puts “Future is here!” end !handle_asynchronously :future, run_at: Proc.new { 5.minutes.from_now }
Ruby on Rails
Gracias_ !
:)