Está en la página 1de 95

ruby on rails

asís y david
{asis.garcia, david.barral}@trabesoluciones.com
a) ruby

b) ruby on rails

c) jruby
ruby es un lenguaje de programación
java es un lenguaje de programación
rails es un framework web MVC
escrito en ruby
struts es un framework VC escrito en java
ruby
productividad y diversión

“somos los amos, son los esclavos”

principio de mínima sorpresa (POLS)


rails
¿C.S.I?
framework web MVC
orientado a acción

DRY
don't repeat yourself

CoC
convention over configuration

“opinado”
ruby (1.8.6)
irb: interactive ruby shell

david@io ~$ irb
>> 5+5
=> 10
>> class Dog
>> end
=> nil
>> dog = Dog.new
=> #<Dog:0x2aaaaabb0ba0>
todo es un objeto
incluso nil es un objeto
todo devuelve un valor
sólo nil y false son falsos
if y unless pre/postfijo, case
loops

while, until (raro)


bloques (closures)
módulos

son objetos
(como todo en Ruby)

agrupan comportamiento
herencia múltiple... ¿para qué?
duck typing
sintáxis múltiple

ideal para DSLs


¡subamos el nivel!
introspección

metaprogramación
previene errores

implementación trivial de
proxies y decoradores

magia negra (rails)


¿qué nos dejamos?

exceptions
require
core libraries
include vs. extend
threads

y mucho más...
herramientas

rdoc ~ javadoc
rake ~ make | ant
gem ~ yum | maven
rails (1.2.x)
$ rails my_app
create create script/process
create app/controllers create test/fixtures
create app/helpers create test/functional
create app/models create test/integration
create app/views/layouts create test/mocks/development
create config/environments create test/mocks/test
create config/initializers create test/unit
create db create vendor
create doc create vendor/plugins
create lib create tmp/sessions
create lib/tasks create tmp/sockets
create log create tmp/cache
create public/images create tmp/pids
create public/javascripts create Rakefile
create public/stylesheets create README
create script/performance ....
todo es ruby
MVC

DRY

CoC

“opinado”

¿divertido? ¿bello?
ActiveRecord (M) Hibernate

ActionView (V) JSP

ActionController (C) Struts


C oC
convenciones rails
convenciones

environment.rb
database.yml
rutas potentes y sencillas
/tagged/music
params

session

flash

cookies
SELECT * FROM `products` LIMIT 1
SELECT `products`.`id` AS t0_r0, `products`.`title` AS t0_r1,
`products`.`description` AS t0_r2, `products`.`short_description`
AS t0_r3, `products`.`price` AS t0_r4, `products`.`available` AS
t0_r5, `products`.`category_id` AS t0_r6,`products`.`created_at` AS
t0_r7, `products`.`updated_at` AS t0_r8, `categories`.`id` AS
t1_r0, `categories`.`name` AS t1_r1 FROM `products` LEFT OUTER JOIN
`categories` ON `categories`.id = `products`.category_id WHERE
(`products`.`id` IN (1,2,3)) ORDER BY products.created_at
has_one

has_many (:trough)

belongs_to

has_and_belongs_to_many
ActionView

layout + views + helpers + partials

Erb
wet > DRY > DRYer
goodies

consola
testing
environments
generators
plugins
tareas rake
the dark side of rails

rendimiento
i18n
hacerlo a la “rails way”
¿más cosas?

rails 2.0 y REST


más filtros y validaciones
xml y ajax
alternativas Erb: haml, markaby
ActiveRecord avanzado
mailers
caché
capistrano
...
despliegue
escalabilidad en rails
pablo a.delgado

http://www.slideshare.net/pablete/escalabilidad-en-rails
http://amaiac.net/conferenciarails2007/torrents
jruby (1.1)
implementación 100% Java
de una VM ruby 1.8.6

acceso a java desde ruby


acceso a ruby desde java
ruby on rails desplegado
en un servidor J2EE
recursos
ruby-lang.org
www.ruby-doc.org
www.ruby-forum.com
rubyforge.org
jobs.rubynow.com
rubyconf2007.confreaks.com
google.com and ask for Ruby politely
rubyonrails.org
wiki.rubyonrails.org
www.ruby-forum.com
www.workingwithrails.com
agilewebdevelopment.com
www.railslodge.com
weblog.rubyonrails.com
www.loudthinking.com
www.therailsway.com
www.zedshaw.com
4trabes.com
lists.rubyonrails.org/mailman/listinfo/rails
lists.simplelogica.net/mailman/listinfo/ror-es
¡eso es todo un poco amigos!
ejemplos de rails
(que no “rails ejemplar”)

También podría gustarte