Top Banner
Un newbie conoce a Sinatra Alejandro “Jano” González
48

Un newbie conoce a Sinatra

Jul 12, 2015

Download

Technology

Jano González
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Un newbie conoce a Sinatra

Un newbie conocea Sinatra

Alejandro “Jano” González

Page 2: Un newbie conoce a Sinatra

http://janogonzalez.com

Page 3: Un newbie conoce a Sinatra

Sinatra es un DSL para crear aplicaciones web en

Ruby

Page 4: Un newbie conoce a Sinatra

De acuerdo...¿Pero cómo lo uso?

Page 5: Un newbie conoce a Sinatra

Mientras tanto en New York...

Do it my way...gem install sinatra

Page 6: Un newbie conoce a Sinatra

# hello_world.rbrequire 'sinatra'

get '/' do 'Hello World!'end

Page 7: Un newbie conoce a Sinatra

$ ruby hello_world.rb

Page 8: Un newbie conoce a Sinatra
Page 9: Un newbie conoce a Sinatra

Parece sencillo...¿Qué otras gracias tiene?

Page 10: Un newbie conoce a Sinatra

Las rutas son el concepto fundamental de Sinatra

Page 11: Un newbie conoce a Sinatra
Page 12: Un newbie conoce a Sinatra

Método HTTP+

Patrón URL

Page 13: Un newbie conoce a Sinatra

get, post, put o delete+

Patrón URL

Page 14: Un newbie conoce a Sinatra

get '/' do # Leer entidadEnd

post '/' do # Crear entidadend

put '/' do # Actualizar entidadend

delete '/' do # Eliminar entidadend

Page 15: Un newbie conoce a Sinatra

Método HTTP+

'/ruta/fija' o 'ruta/:parm'

Page 16: Un newbie conoce a Sinatra

get '/entidad/:id' do # El id está en params[:id]End

get '/entidad/:id' do |id| # El id está en idend

Page 17: Un newbie conoce a Sinatra

Método HTTP+

'/ruta/*'

Page 18: Un newbie conoce a Sinatra

get '/desde/*/hasta/*' do # Los 2 matches de * están # en params[:splat]End

get '/entidad/*.html' do # El match de * está en params[:splat]end

Page 19: Un newbie conoce a Sinatra

Los archivos estáticos están por omisión en

/public

Page 20: Un newbie conoce a Sinatra

Las vistas están por omisión en /view

Page 21: Un newbie conoce a Sinatra

También pueden declararse dentro del

mismo archivo!

Page 22: Un newbie conoce a Sinatra

Soporte para ERB, HAML, Markdown,

Textile, etc.

Page 23: Un newbie conoce a Sinatra

get '/' do # Para obtener la plantilla bajo # /view/index.haml haml :indexend

Page 24: Un newbie conoce a Sinatra

Es posible definir filtros

Page 25: Un newbie conoce a Sinatra

before do # Hacer algo antesend

after do # Hacer algo despuésend

Page 26: Un newbie conoce a Sinatra

Es posible manejar errores

Page 27: Un newbie conoce a Sinatra

not_found do # Hacer algo en caso de 404end

error 403 do# Hacer algo en caso de no autorizado

end

error Twitter::Unauthorized do# Manejar la excepción

end

error do# Manejar error genérico

end

Page 28: Un newbie conoce a Sinatra

Aplicaciones modulares

Page 29: Un newbie conoce a Sinatra

class MyApp < Sinatra::Base

Page 30: Un newbie conoce a Sinatra

¿Qué camino debe seguir un newbie para crear una

aplicación?

Page 31: Un newbie conoce a Sinatra

Revisemos el pulento ejemplo...

http://my-tweet-week.heroku.com

Fork me on GitHub

Page 32: Un newbie conoce a Sinatra

RVM+

GitHub+

Heroku+

Bundler

Page 33: Un newbie conoce a Sinatra

$ rvm gemset create nombre_aplicacion$ rvm gemset use nombre_aplicacion$ gem install bundler$ gem install heroku

Page 34: Un newbie conoce a Sinatra

Crea un Gemfile indicando las gems que requiere tu aplicación

Page 35: Un newbie conoce a Sinatra

source 'http://rubygems.org'

gem 'sinatra'gem 'haml'gem 'twitter'gem 'oauth'gem 'json_pure'

group :test do gem 'rspec' gem 'rack-test'end

Page 36: Un newbie conoce a Sinatra

$ bundle install

Page 37: Un newbie conoce a Sinatra

Crea un config.ru para el despliegue de tu

aplicación

Page 38: Un newbie conoce a Sinatra

require File.join(File.dirname(__FILE__), 'my_tweet_week.rb')

run MyTweetWeek

Page 39: Un newbie conoce a Sinatra

Programa tu aplicación

Page 40: Un newbie conoce a Sinatra

require 'bundler'Bundler.setup(:default)

require 'sinatra'require 'haml'require 'twitter'require 'oauth'

class MyTweetWeek < Sinatra::Base set :haml, :format => :html5, :attr_wrapper => '"' enable :sessions, :static, :raise_errors set :public, File.join(File.dirname(__FILE__), 'public')

get '/' do haml :index end get '/login' do request_token = consumer.get_request_token(:oauth_callback => ENV['OAUTH_CALLBACK'])

session[:request_token] = request_token.token session[:request_token_secret] = request_token.secret redirect request_token.authorize_url end

. . .

Page 41: Un newbie conoce a Sinatra

Haz un push en Heroku y tendrás tu aplicación en la

web :)

Page 42: Un newbie conoce a Sinatra

$ git push heroku master

Page 43: Un newbie conoce a Sinatra
Page 44: Un newbie conoce a Sinatra

Tus sugerencias y críticas me ayudarán a dejar de

ser un newbie :)

Page 45: Un newbie conoce a Sinatra

Sinatra es ideal para aplicaciones pequeñas y

servicios web

Page 46: Un newbie conoce a Sinatra

http://www.sinatrarb.com

Page 47: Un newbie conoce a Sinatra

No actuaron hoy

Rutas Regex,Rutas condicionales,

Helpers,Acceso al objeto Request,

Et ál.

Page 48: Un newbie conoce a Sinatra

Imágenes deWikimedia Commons