Pregunta

He escrito una aplicación de rieles que sigue la estructura de directorios normal (código de modelo en modelos, código de controlador en controladores).

Pero ahora estoy trabajando en una nueva función y para eso he escrito algunos (lo que llamaría) " service " código.
La nueva característica es importar algunos datos al sistema, en este momento son dos clases para importar pero podrían expandirse a más.

No creo que el nuevo código pertenezca al modelo, ya que no está modelando ningún objeto (tampoco está directamente relacionado con ningún objeto). Ciertamente, tampoco creo que pertenezca al controlador, ya que no es lógica de presentación.

Entonces, he creado una "aplicación / servicios" directorio y ponerlo allí. También he creado una "prueba / servicios" directorio donde he puesto mis pruebas.

Todo bien, pensé, pero cuando ejecuto 'rake: test' o 'autotest' mis nuevas pruebas de servicios no se ejecutan.
Ahora espero que haya una manera de hacer que el rastrillo los recoja, pero ¿es esto una señal de advertencia de que he hecho algo mal?
¿Hay algún otro lugar donde debería vivir el código o de alguna manera no estoy haciendo las cosas "a la manera de Rails"?

Generalmente, cada vez que me encuentro con un problema como este antes, generalmente descubro que los rieles ya tienen una solución, pero no estaba al tanto de la convención. ¿Es este uno de esos casos?

¿Fue útil?

Solución

Para eso está la carpeta 'lib'.

La carpeta lib está en la ruta buscada automáticamente, por lo que puede tener

class MyFoo
end

en lib / my_foo.rb y luego simplemente llamando

MyFoo.new

desde un controlador, el código se cargará sin que necesite un requiere 'my_foo'

Otros consejos

./lib es definitivamente el lugar para ir.

Otro lugar para colocar esto es en el directorio de inicializadores en config, dependiendo de lo que esté haciendo. También puede considerar convertir todo en un complemento, pero si es una pequeña cantidad de funcionalidad, probablemente no valga la pena.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top