Silniki Rails (Engines) to mini-aplikacje spakowane jako gemy w Ruby, które udostępniają własne modele, kontrolery, widoki, trasy i migracje.
Generowanie wtyczki typu Rails Engine
# Wygenerowanie montowalnego silnika z izolowaną przestrzenią nazw
bin/rails plugin new my_engine --mountable --skip-bundle
Architektura silnika (Engine)
Wewnątrz 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
Montowanie w aplikacji nadrzędnej (Host)
W pliku config/routes.rb aplikacji hosta:
Rails.application.routes.draw do
mount MyEngine::Engine => "/blog"
end
Migracje silnika
Kopiowanie migracji silnika do aplikacji głównej:
bin/rails my_engine:install:migrations
bin/rails db:migrate