Rails Engines — это мини-приложения, упакованные как Ruby gem, предоставляющие собственные модели, контроллеры, представления, маршруты и миграции.
Генерация плагина Rails Engine
# Создание монтируемого полнофункционального движка с изолированным пространством имен
bin/rails plugin new my_engine --mountable --skip-bundle
Архитектура движка
В 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
Монтирование в хост-приложении
В файле config/routes.rb хост-приложения:
Rails.application.routes.draw do
mount MyEngine::Engine => "/blog"
end
Миграции движка
Для копирования миграций движка в основное приложение:
bin/rails my_engine:install:migrations
bin/rails db:migrate