Estoy en el proceso de convertir mi aplicación Rails estándar en un motor montable. La aplicación es comparable a una aplicación de blog estándar y quiero que cada modelo, controlador y vista sean extensibles, de ahí mi elección para un motor de montaje.Motor montable en rieles y anulación de otro motor
Una de las gemas que uso es Devise, que por lo que entiendo es una especie de motor montable. Se puede usar dentro de un motor montable como se indica here.
Puedo usarlo parcialmente dentro de mi motor. Todo está funcionando bien entre ellos algunos controlador Diseñar puedo reemplazar como éste:
# config/routes.rb
Bbronline::Engine.routes.draw do
devise_for :users, class_name: "Bbronline::User", module: :devise,
controllers: { registrations: "bbronline/devise_overrides/registrations"}
...
# controllers/bbronline/devise_overrides/registrations_controller.rb
require_dependency "bbronline/application_controller"
module Bbronline
class DeviseOverrides::RegistrationsController < Devise::RegistrationsController
def new_intermediair
@user = User.new
end
...
La opinión correcta 'vistas/bbronline/devise_overrides/registros/new_intermediair.html.haml también se está cargando correctamente como se esperaba.
Sin embargo, mi problema es que las vistas que anulo sin un controlador personalizado no se cargan correctamente. Por ejemplo, la vista que debería tener la vista de inicio de sesión ubicada en views/bbronline/devise/sessions/new.html.haml
y no está cargada. En cambio, la vista de inicio de sesión estándar de Devise se carga, es decir, devise-2.1.0/app/views/devise/sessions/new.html.erb
Por supuesto que podría resolver este problema anulando cada controlador con mi propio controlador como lo hice con el registrador_controlador anterior, pero esto parece muy feo. ¿Está anulando cada controlador la forma de hacer esto? ¿Existe alguna manera más conveniente de anular las vistas de un motor montable dentro de otro motor montable?
¿De qué forma podría hacer este cambio sin tener que cambiar la configuración de mi aplicación ficticia? Prefiero hacer que este sea el comportamiento predeterminado cada vez que cargue mi gema. – Ajedi32