Rails Engines zijn mini-applicaties verpakt als Ruby-gems die hun eigen modellen, controllers, views, routes en migraties bieden.
Een Rails Engine Plugin genereren
# Genereer een koppelbare full-stack engine met geïsoleerde namespace
bin/rails plugin new my_engine --mountable --skip-bundle
Engine-architectuur
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
Koppelen in hostapplicatie
In de config/routes.rb van de hostapplicatie:
Rails.application.routes.draw do
mount MyEngine::Engine => "/blog"
end
Engine-migraties
Om engine-migraties naar de hoofdapplicatie te kopiëren:
bin/rails my_engine:install:migrations
bin/rails db:migrate