I Rails Engine sono mini-applicazioni impacchettate come gem Ruby che forniscono propri modelli, controller, viste, rotte e migrazioni.
Generazione di un plugin Rails Engine
# Genera un engine montabile con namespace isolato
bin/rails plugin new my_engine --mountable --skip-bundle
Architettura dell'Engine
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
Montaggio nell'applicazione host
Nel file config/routes.rb dell'applicazione host:
Rails.application.routes.draw do
mount MyEngine::Engine => "/blog"
end
Migrazioni dell'Engine
Per copiare le migrazioni dell'engine nell'applicazione principale:
bin/rails my_engine:install:migrations
bin/rails db:migrate