Cuando comienzas a construir una nueva aplicación web con Ruby on Rails, ¿comienzas desde cero? ¿Construye a partir de una plantilla preexistente o un proyecto anterior?

Siempre empiezo desde cero para no heredar algo extra que realmente no necesito y que luego necesitaría limpiar.

Hay varias razones por las cuales copiar / pegar el código existente podría no ser un camino a seguir:

  1. Sintiéndose cómodo con BDD, desearía escribir primero la prueba de aceptación de alto nivel que conduciría el código de la aplicación desde afuera hacia adentro. De esta manera, solo escribiría una nueva línea de código de producción para hacer pasar la prueba escrita anteriormente.
  2. Las cosas que son más comunes en todas las aplicaciones web ya están disponibles como gemas de Ruby. Por ejemplo, plataformatec / devise tiene todo lo que pueda necesitar con respecto a la funcionalidad de autenticación, para procesar pagos usaría Shopify / active_merchant, para permitir iniciar sesión con Facebook o Twitter – intridea / omniauth, para la paginación usaría amatsuda / kaminari o mislav / will_paginate y así sucesivamente. Vea la lista de las gemas populares de Ruby en The Ruby Toolbox. Estas partes reutilizables pertenecen a la capa de aplicación de la aplicación, la capa de dominio es única para cada problema comercial que está tratando de resolver. Por lo tanto, no podrá encontrar una plantilla o un proyecto similar para la nueva aplicación a menos que intente resolver exactamente el mismo problema de la misma manera.
  3. Es demasiado fácil pasar por alto un error en el código existente u olvidarse de algún caso límite que causará problemas cuando menos se lo espera en algunas condiciones poco comunes.

Aunque recientemente, cuando tuve que implementar rápidamente una pequeña aplicación Rails para una entrevista, utilicé binarylogic / authlogic porque estoy más familiarizado con ella y, a diferencia de plataformatec / idear, no genera todas las vistas necesarias. Así que creé un andamio usando un generador de Rails para el modelo de Usuario en una aplicación de Rails ficticia separada solo para copiar / pegar las plantillas de vista y ahorrarme algo de tiempo al no escribir mucho HTML y ERB.