Engine

参考:

Rails エンジン入門 | Rails ガイド [公式]

Rails プラグイン作成入門 | Rails ガイド [公式]

class Rails::Engine | Ruby on Rails API [Official]

使い方

参考:

使いやすくなった Rails 3.1 の Engine | passingloop の日記

Rails Engine を使って API と管理画面を分離する | blog.daich.org

mountable engine で管理画面を作る – Qiita

Mountable Engine だらけの Rails アプリ開発 | onk.ninja

機能が増えた Rails アプリケーションを Rails Engine で分割する vol.2 | はっさんブログ

ローカルでエンジンを生成してホストアプリケーションからマウントするまでの手順 | ABC Blog

iyuuya/my_engine: Rails 4.2 + RSpecでMountableなEngineを作る – GitHub Gist

Rails mountable engines | AmberBit Blog

Rev Up Your Rails Engine For Static Assets | Josh Bavari’s Ramblings

Start your engines! | reinteractive

Integrating Gem/Engine and Main Rails App – GitHub Gist

概要

参考:

Rails::Engine とはなんなのか | 珈琲駆動開発

導入

参考:

はじめての Mountable Engine – Qiita

Rails Engine でプラグインを作ってみる。- Qiita

サブプロジェクトを作成する | DevelopersIO

Rails プラグインを作る | CA MOBILE TECH BLOG

ディレクトリ構成

参考:

Rails エンジンによる脱 Microservices 化のススメ | Technology of DeNA

config

参考:

Rails で共通の設定ファイルをもちたいというとき | 経理からエンジニア転向した人のメモ

Ruby Gem Configuration Pattern | Hack Your Design!

Rails の config で設定できる Rails 向け gem を作る | passingloop の日記

Rails plugin で engine を使った gem の作り方 config 編 | joppot

ActiveSupport::OrderedOptions | Ruby on Rails API [Official]

Best way to create custom config options for my Rails app? – Stack Overflow

How to define custom configuration variables in rails – Stack Overflow

config.x

ネストした設定に容易にアクセスできる。

参考:

config.x を利用して、Rails.configuration にユーザ定義値をセットする – Qiita

Rails で共通の設定ファイルをもちたいというとき | 経理からエンジニア転向した人のメモ

カスタム設定 | Rails ガイド [Official]

Custom application configuration variables in Rails 4 and 5 | Arkency Blog

config_for

参考:

Rails.application の config_for を使って、ユーザ定義の設定値を定義する – Qiita

Rails で共通の設定ファイルをもちたいというとき | 経理からエンジニア転向した人のメモ

Rails の独自 config/*.yml 読み込み処理 – Qiita

root

エンジンのプロジェクトルートディレクトリのパスを参照する。

MyEngine::Engine.root
# => #<Pathname:/path/to/my_engine>

文字列として参照する。

MyEngine::Engine.root.to_s
# => "/path/to/my_engine"

参考:

is there an Engine.root? – Stack Overflow

マウントしたエンジンのルーティングをアプリケーションからアクセスする

as を指定してエンジンをマウントする。

mount MyEngine::Engine, at: "/my_engine", as: "my_engine"

as で指定した名前で URL ヘルパーを参照できる。

<%= link_to "Users in my engine", my_engine.users_path %>

参考:

engine の routing を application 側から path で呼び出す – Qiita

マウントしたエンジンとメインのアプリ間でのアクセス – Qiita

ルーティング | Rails ガイド [公式]

Rails loads url_helper from engine module vs application module (if they have the same name) · Issue #33732 · rails/rails – GitHub

Rails.application.routes.url_helpers missing method – Stack Overflow

メインアプリのルーティングをエンジンからアクセスする

main_app に URL ヘルパーが含まれている。

<%= link_to "Home", main_app.root_path %>

参考:

Engine 側からどういうわけか main_app の URL helper を使いたい – Qiita

マウントしたエンジンとメインのアプリ間でのアクセス – Qiita

ルーティング | Rails ガイド [公式]

Rails Engine as the parent route for the main app resources | reddit

main_app – rails/finisher.rb at v5.2.3 · rails/rails – GitHub

remove the need for main_app prefix in path helpers in main app – Stack Overflow

エンジンのマイグレーション呼び出しを簡単にする

参考:

Rails の Engine で migration を幾分シンプルにする方法 – Qiita

leave your migrations in your Rails engines | Pivotal

Rails Engine を使って API と管理画面を分離する | blog.daich.org

How to configure an extra/different migrations folder – Stack Overflow

自動的にマウントさせる

参考:

How to mount Rails Engines automatically/dynamically? – Stack Overflow

autoload_paths

エンジンプロジェクト内のディレクトリを autoload_paths に追加する。

class MyEngine < Rails::Engine
  # Add a load path for this specific Engine
  config.autoload_paths << \
    File.expand_path("lib/some/path", __dir__)
end

参考:

How can I add autoload_paths in my Rails4 Engine? – Stack Overflow

Rails::Engine | Ruby on Rails API [Official]

インストーラーを作成する

参考:

Rails Engine で簡単にインストーラを作成する方法 – Qiita

webpacker

参考:

Using JS components from Rails engines · reactjs/react-rails Wiki – GitHub

Include files coming from engines · Issue #21 · rails/webpacker – GitHub

How to use this gem from within rails engines? · Issue #348 · rails/webpacker – GitHub

Engine generators | DAKARAI

Railtie の働き

参考:

Gem、Railtie プラグイン、Engine (full/mountable) の違いとそれぞれの基礎情報 – Qiita

マウントしているエンジンの一覧を取得する

Engine のサブクラス一覧

Rails::Engine.subclasses

Railtie 一覧

Rails.application.railties

参考:

Rails 4 list mounted engines – Stack Overflow

How to get the list of all engines in Rails 3 app – Stack Overflow

テスト

参考:

plugin + ActiveRecord + test まとめ – Qiita

Rails Engine を単体でテストしてみる | くりにっき

Rails 用 Gem 開発におけるテスト実装のための最小構成のダミーアプリ | Simplie Post

mountable な rails plugin のテストの書き方 – QA@IT

Testing Rails engines: the dummy app | Sarah Branon

Rails Engine testing: Moving your dummy | Coding Adventures

Combustion – Better Rails Engine Testing | Pat Allan

任意のクラスを拡張するエンジンを作成する

参考:

How I created engines from monolithic Ruby on Rails application! | dinesh panda

タグ:

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です