Engine

公式サイト:

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

ガイド

参考:

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

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

使い方

参考:

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

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

Mountable Engine で管理画面を作る – Qiita

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

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

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

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>Code language: Ruby (ruby)

文字列として参照する。

MyEngine::Engine.root.to_s
# => "/path/to/my_engine"Code language: Ruby (ruby)

参考:

is there an Engine.root? – Stack Overflow

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

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

mount MyEngine::Engine, at: "/my_engine", as: "my_engine"Code language: Ruby (ruby)

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__)
endCode language: Ruby (ruby)

参考:

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

Railtie の働き

参考:

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

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

Engine のサブクラス一覧

Rails::Engine.subclassesCode language: Ruby (ruby)

Railtie 一覧

Rails.application.railtiesCode language: Ruby (ruby)

参考:

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 (archive)

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

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

Testing Rails engines: the dummy app | Sarah Branon

Rails Engine testing: Moving your dummy | Coding Adventures (archive)

Combustion – Better Rails Engine Testing | Pat Allan

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

参考:

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

記事をシェアする:
タグ:

コメントを残す

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

Protected by reCAPTCHA