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