tutorial rails práctico libro lenguaje español ejemplos desarrollo aplicaciones ruby-on-rails ruby module

ruby-on-rails - práctico - ruby on rails ejemplos



¿Cuándo considerar la creación de su propio módulo Ruby en una aplicación Rails? (3)

1) Cada vez que estoy a punto de duplicar (o sustancialmente duplicar) un fragmento de código: "oh, podría cortar / pegar en este otro controlador ..."

2) Cada vez que escribo un código que obviamente será reutilizado en el futuro.

3) Código de tamaño sustancial que tiene un propósito específico, donde ese propósito es bastante distinto del propósito principal del controlador / modelo. Esto está algo relacionado con (2), pero a veces el código no se reutiliza, pero un módulo ayuda a la organización.

Con un módulo de Ruby, puede agrupar un montón de métodos que podría usar en un solo lugar y luego incluirlos en una clase, por lo que es como si los hubiera escrito en esa clase.

¿Qué tipo de usos prácticos hay para los módulos de Ruby en una aplicación de Rails?

Apreciaría si alguien pudiera mencionar un ejemplo de dónde realmente han usado un módulo propio, de modo que tenga una idea de qué situaciones debería estar pensando en crearlos. Gracias.


Puede colocarlos en el directorio / lib y se cargarán con su proyecto Rails.

Por ejemplo, puede ver este repositorio de un antiguo proyecto: lib directorio de un proyecto Rails

Así por ejemplo, tengo el siguiente módulo:

google_charts.rb Module GCharts class GoogleCharts def some_method end end end

Y en cualquier lugar de mi aplicación Rails, puedo acceder a los métodos.

Entonces, si tuviera que acceder desde un controlador, simplemente haría:

require ''google_charts'' GCharts::GoogleCharts.some_method


Usamos módulos para funciones que no están vinculadas a los modelos de ActiveRecord y no se han abstraído en un complemento o gema.

Un ejemplo reciente de nuestra base de código de producción es una biblioteca para integrarse con Campaign Monitor para la administración de listas de correo electrónico. El núcleo del sistema utiliza nuestro modelo de usuario, pero la interacción real con el servicio extenrl se resume a través de un módulo que vive en / lib.