Rails Engine은 자체 모델, 컨트롤러, 뷰, 라우트 및 마이그레이션을 패키징하여 제공하는 Ruby gem 형태의 미니 애플리케이션입니다.
Rails 엔진 플러그인 생성
# 격리된 네임스페이스를 가진 마운트 가능한 풀스택 엔진 생성
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