22

Rails top features

Embed Size (px)

Citation preview

RAILSMAKE THE WEB GREAT AGAIN

¿Porque esta charla?

6 razones por las que debes usar rails

y algunas por las que NO deberías

Ruby hace a los programadores poderosos

felices.

Algunas personas piensan que es

demasiado..."1".to_i

#=> 1

class String

def to_i

raise 'foobar'

end

end

"1".to_i

#=> RuntimeError: foobar

class String

def to_i

self.to_f - 1.13

end

end

"2".to_i

#=> 0.8700000000000001

Es mucho mas que “convention over configuration”

La flexibilidad está sobrevalorada

Las restricciones son liberadoras

Solo hay que saber leer!

class User < ActiveRecord::Basedevise :database_authenticatable, :registerable

validates_numericality_of :years_of_experience, :allow_blank => true

acts_as_taggableacts_as_taggable_on :certificates, :expertise_kinds

validates_presence_of :first_name, :last_name, :email

has_many :translations

has_attached_file :avatar, :styles => {:small => "240x240>"}has_attached_file :cv

Quieres hacer X?Hay una gema para eso!

Manejo de dependencias integrado,

elegante y sencillo

TOTAL GEMS

127,111

TOTAL USERS

108,518

TOTAL DOWNLOADS

11,254,913,884

Rails == ‘no reinventar la rueda’#=> True

Problem? Integrado? Hay gema? Gema/s

Paginación N/A Si Kaminari, will_paginate

Autenticación Si Device, Authlogic, Omniauth

Autorización Si CanCan

Test auto-generados Si Shoulda

Dependency-Management Si Si Bundler

Background-jobs N/A Si Resque, sidekiq, delayed_job

Minificar JS y CSS Si Jammit

Simular interaction real usuarios Si capybara

ecommerce Si Active Merchant

Deployment Si Si Passenger,

Better error management Si Si Better_errors

Email management Si Si Letter_opener,

Everything else Probably

ActiveRecord

Buscadores dinámicos

Person.find_by_name_and_company_id('Jorge Luis Borges', 42)

Scopingclass Shirt < ActiveRecord::Base

named_scope :red, :conditions => {:color => 'red'}

named_scope :dry_clean_only, :joins =>

:washing_instructions,:conditions

=> ['washing_instructions.dry_clean_only = ?', true]

end

Si llamamos Shirt.red esto hara un query a la base de datos con la condicion "color = 'red'"

La parte genial es que si combinamos mas de un parámetro ej:

Shirt.red.dry_clean_only

este va a construir un solo query, con todas las condiciones y todos los joins necesarios en la base de

datos.

Scaffolding

Generar una app completa con 3

lineas de codigo

rails generate scaffold Game name:string

rails generate scaffold HighScore game:references score:integer

rails db:migrate

Razones para NO usar rails

1. Performance (Fixed with ruby 3)

2. Aplicaciones/bases de datos existentes3. Requires extensive code-review4. Tal Vez pierda popularidad en el futuro5. NO es para principiantes (demasiada magia)

Gracias!