Documentos de Académico
Documentos de Profesional
Documentos de Cultura
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
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
son objetos
(como todo en Ruby)
agrupan comportamiento
herencia múltiple... ¿para qué?
duck typing
sintáxis múltiple
metaprogramación
previene errores
implementación trivial de
proxies y decoradores
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
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
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?
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