Tal como está ahora, no puede volver a abrir las clases del motor contenidas en el directorio /app
del motor simplemente agregando la misma clase en el directorio /app
de la aplicación principal. Por ejemplo:Reapertura de Rails 3 clases de motor desde la aplicación principal
/my_engine/app/controllers/users_controller.rb
/my_app/app/controllers/users_controller.rb
El archivo de my_engine
ni siquiera se carga si existe un archivo con el mismo nombre en la aplicación de los padres. Más detalles aquí:
Busco a una solución que permita que una gota del mismo nombre de archivo/clase en el mismo camino que la aplicación de los padres, y volver a abrir en lugar de sobrescribir la clase. Tal vez me estoy perdiendo algo obvio. Puedo hacer que esto funcione con un archivo separado (nombre de archivo diferente) que usa class_eval, pero no estoy muy contento con esa solución. ¿Alguna idea sobre una solución elegante para esto?
También me pregunto si hay una razón detrás de esta restricción, o es solo el resultado de cómo los rieles cargan archivos (ver el enlace incluido) y no intencional. Me parece que cambiar el comportamiento de carga de los motores para permitir la reapertura de clases de esta manera sería una buena característica en los rieles. Sé que me confundió al principio, y estoy seguro de que otros desarrolladores también tendrán problemas con este problema.
yo encontramos este que tiene un parche: http://stackoverflow.com/q/5045068/378044 – johnmcaliley