Rails Engines sunt mini-aplicații împachetate sub formă de gem-uri Ruby care furnizează propriile modele, controllere, vizualizări, rute și migrări.
Generarea unui plugin Rails Engine
# Generare engine montabil cu namespace izolat
bin/rails plugin new my_engine --mountable --skip-bundle
Arhitectura modulului (Engine)
În 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
Montarea în aplicația gazdă
În fișierul config/routes.rb al aplicației gazdă:
Rails.application.routes.draw do
mount MyEngine::Engine => "/blog"
end
Migrările modulului (Engine Migrations)
Copierea migrărilor engine-ului în aplicația principală:
bin/rails my_engine:install:migrations
bin/rails db:migrate