Soy un desarrollador de .NET y tuve la oportunidad de jugar con Ruby on Rails este fin de semana.
En .NET separamos las capas de la aplicación creando proyectos de biblioteca de clases separadas. Desde el punto de vista del patrón de diseño, ¿tenemos que hacer eso también en Rails o es solo un proyecto completo con todo?
design-patterns
.net
ruby-on-rails
Ryan Adriano
fuente
fuente
Respuestas:
Verás que las aplicaciones de Rails comienzan como repositorios únicos. Los más exitosos (Twitter, Square, muchos otros) se dividen en múltiples bases de código a medida que crecen en ese requisito. Esas bases de código adicionales pueden ser demonios , servicios , gemas, motores Rails u otra cosa.
Esta refactorización en múltiples proyectos no se realiza hasta que sea necesario, porque YAGNI . Bifurcar su proyecto el día 1 ralentiza el tiempo de creación de prototipos, y la velocidad de creación de prototipos es una fortaleza clave de Ruby y de Rails. Deberá tener en cuenta que crear o una clase en Ruby no cuesta casi nada, al igual que dividir una clase bien diseñada. Su código Ruby puro vivirá en su mayoría bajo
/app/
(app/models
,app/views
app/controllers
,app/helpers
) y/lib/
. Sus activos estáticos, JS / Coffee en capas incluyen, y CSS / Sass / etc incluyen estarán en/app/assets
.Comprender por qué separar una clase de Ruby es tan fácil requiere un poco de lectura sobre la escritura de patos y la comprensión de que las interfaces de Ruby no son tan férreas como podría estar acostumbrado en un entorno menos dinámico.
Aquí hay algunos enlaces que pueden interesarle:
Breve descripción del tipeo de patos ( blog de Yehuda Katz )
La inestimable Sandi Metz sobre cómo y por qué diseñar programas OO que sean fáciles de leer, comprender y cambiar ( podcast Ruby Rogues de 2 horas ) ( Su fantástico libro )
El creador de Rails, David Heinemeier Hansson, sobre la cartera de activos y los problemas de diseño de código que mejora ( video principal de RailsConf )
Haciendo tu propia gema ( Rubygems.org HOWTO )
Buena suerte con tus proyectos!
fuente
En las bibliotecas de Ruby se llaman gemas, consulte http://www.ruby-lang.org/en/libraries/ , y se usa de la misma manera que las bibliotecas de clases .NET.
fuente