Rails Engines sind als Ruby Gems gepackte Mini-Anwendungen, die eigene Modelle, Controller, Views, Routen und Migrationen bereitstellen.
Ein Rails-Engine-Plugin generieren
# Mountbare Full-Stack-Engine mit isoliertem Namespace generieren
bin/rails plugin new my_engine --mountable --skip-bundle
Engine-Architektur
In 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
In Host-Anwendung einbinden (Mounting)
In der config/routes.rb der Host-Anwendung:
Rails.application.routes.draw do
mount MyEngine::Engine => "/blog"
end
Engine-Migrationen
Um Engine-Migrationen in die Hauptanwendung zu kopieren:
bin/rails my_engine:install:migrations
bin/rails db:migrate