13
acts_as_wheel_in ventor Rubén Medellín (@chubas) Pio.la on Rails

Acts As Wheel Inventor - Plugins on Rails

  • Upload
    chubas7

  • View
    524

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Acts As Wheel Inventor - Plugins on Rails

acts_as_wheel_inventorRubén Medellín

(@chubas)Pio.la on Rails

Page 2: Acts As Wheel Inventor - Plugins on Rails

Plugins

Módulos funcionales de una aplicación

Diferentes a las gemas en que éstos solo son accesibles a la aplicación que los utiliza

Diferentes al directorio /lib en que son componentes reusables, e incluyen funcionalidad extra

Page 3: Acts As Wheel Inventor - Plugins on Rails

Bajo acoplamiento, alta cohesión Debe hacer una sola cosa - y nada

más - y ser independiente de los demás módulos

Page 4: Acts As Wheel Inventor - Plugins on Rails

Filosofía Rails

DRY Don’t reinvent the wheel Convention over configuration Complex framework, easy logic

Page 5: Acts As Wheel Inventor - Plugins on Rails

Monkeypatching

Si uno hace plugins embebidos directamente en uno de los componentes Rails, debe tener cuidado de no alterar la funcionalidad existente, o causar conflictos.

Page 6: Acts As Wheel Inventor - Plugins on Rails

Realización de un plugin

script/generate plugin

Page 7: Acts As Wheel Inventor - Plugins on Rails

Realización de un plugin

Pruebas! Documentación! Distribúyelo!

Page 8: Acts As Wheel Inventor - Plugins on Rails

Anatomía de un plugin

install.rb uninstall.rb

Page 9: Acts As Wheel Inventor - Plugins on Rails

Anatomía de un plugin

init.rbPlugin loaderSe puede definir el orden de los

plugins, al igual que con las gemas

Page 10: Acts As Wheel Inventor - Plugins on Rails

Anatomía de un plugin

libContenido va aquíSi es grande, separar (usualmente: rails

-> app, models, views, helpers) tasks

Rakefiles generators

generators / destroyers, y templates tests

Pruebas funcionales, de vistas, etc.

Page 11: Acts As Wheel Inventor - Plugins on Rails

Ejemplo

http://github.com/chubas/birthday_countdown

Page 12: Acts As Wheel Inventor - Plugins on Rails

Ejercicio para el lector

Modificar el plugin, de tal manera que se pueda especificar el nombre del campo, y no acepte solamente :birthday

El modelo puede quedar algo así:class Event counts_days_to :inauguration_dateend

Page 13: Acts As Wheel Inventor - Plugins on Rails

Gracias