Los Rails Engines son mini-aplicaciones empaquetadas como gemas de Ruby que proporcionan sus propios modelos, controladores, vistas, rutas y migraciones.
Generación de un Plugin de Rails Engine
# Generar un motor montable de pila completa con namespace aislado
bin/rails plugin new my_engine --mountable --skip-bundle
Arquitectura del Motor (Engine)
Dentro de lib/my_engine/engine.rb:
module MyEngine
class Engine < ::Rails::Engine
isolate_namespace MyEngine
initializer "my_engine.assets" do |app|
app.config.assets.precompile += %w[my_engine/application.css]
end
end
end
Montaje en la Aplicación Anfitriona
En el archivo config/routes.rb de la aplicación anfitriona:
Rails.application.routes.draw do
mount MyEngine::Engine => "/blog"
end
Migraciones del Engine
Para copiar las migraciones del engine a la aplicación principal:
bin/rails my_engine:install:migrations
bin/rails db:migrate