Engine
公式サイト:
class Rails::Engine | Ruby on Rails API [Official]
ガイド
参考:
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
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 で共通の設定ファイルをもちたいというとき | 経理からエンジニア転向した人のメモ
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.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 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
Code 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.subclasses
Code language: Ruby (ruby)
Railtie
一覧
Rails.application.railties
Code 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