Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Railtieでpluginを作ろう!
Search
onunu
August 24, 2017
Technology
0
520
Railtieでpluginを作ろう!
Meguro.rb #6の発表資料です
onunu
August 24, 2017
Tweet
Share
More Decks by onunu
See All by onunu
othlotech
onunu
1
3.2k
ビッグデータと機械学習の狭間で -データエンジニアに求められる役割-
onunu
5
1.3k
Railsと考えるデータベースのインデックス戦略
onunu
4
1.7k
地球とSQL
onunu
2
560
Other Decks in Technology
See All in Technology
Google Cloud で学ぶデータエンジニアリング入門 2025年版 #GoogleCloudNext / 20250805
kazaneya
PRO
9
1.8k
恐怖!テストコードなき夜
tsukuboshi
2
110
SAE J1939シミュレーション環境構築
daikiokazaki
1
210
AI エンジニアの立場からみた、AI コーディング時代の開発の品質向上の取り組みと妄想
soh9834
8
630
[TechNight #91] Oracle Database 最新パフォーマンス分析手法
oracle4engineer
PRO
4
340
Strands Agents & Bedrock AgentCoreを1分でおさらい
minorun365
PRO
6
150
Power Automate のパフォーマンス改善レシピ / Power Automate Performance Improvement Recipes
karamem0
0
280
dipにおけるSRE変革の軌跡
dip_tech
PRO
0
120
隙間時間で爆速開発! Claude Code × Vibe Coding で作るマニュアル自動生成サービス
akitomonam
3
250
Microsoft Learn MCP/Fabric データエージェント/Fabric MCP/Copilot Studio-簡単・便利なAIエージェント作ってみた -"Building Simple and Powerful AI Agents with Microsoft Learn MCP, Fabric Data Agent, Fabric MCP, and Copilot Studio"-
reireireijinjin6
1
210
データエンジニアがクラシルでやりたいことの現在地
gappy50
3
810
Rubyの国のPerlMonger
anatofuz
2
690
Featured
See All Featured
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
130
19k
Intergalactic Javascript Robots from Outer Space
tanoku
272
27k
How to Think Like a Performance Engineer
csswizardry
25
1.8k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
8
870
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
507
140k
Building an army of robots
kneath
306
45k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
110
19k
GitHub's CSS Performance
jonrohan
1031
460k
Become a Pro
speakerdeck
PRO
29
5.5k
Building Better People: How to give real-time feedback that sticks.
wjessup
367
19k
Unsuck your backbone
ammeep
671
58k
Balancing Empowerment & Direction
lara
1
520
Transcript
Railtieで Rails pluginを 作ろう! In Meguro.rb #6 @onunu
Hello! おぬま りく@onunu SQLを書く仕事を してます:) Twitter: @onunu_ Github: onunu
1. Railtieってなに? (読み方がよくわかってない )
Railtieってなに? ◎ Rails公式のプラグイン機構 ◎ Railtieに基づいてコンポーネントを作ることで ◎ Railsの様々な処理を ◦ 変更したり ◦
拡張することができる Railties – Gluing the Engine to the Rails Railties is responsible for gluing all frameworks together. https://github.com/rails/rails/tree/master/railties
Railtieってなに? -Railtieでできること- ◎ 初期化処理(initializer) ◎ ジェネレータ(rails generate **) ◎ Rakeタスク
◎ 各種設定(config)
2. (よくわかってないけど) Railtieすごい
RailsはRailtieによって管理されている! よくある config/application.rb さまざまなgemのRailtie を requireしている
RailsはRailtieによって管理されている! Applicationクラスは Railtieクラスをもとに 作られている Rails::Application はRailtieのサブクラスだっ たんだなぁ Perfect Ruby on
Railsでの解説
3. Rails pluginを作ってみる
Rails pluginを作ってみる Railsのpluginとしてgemを作る時, 以下のいずれかになる ◎ Railtie <- 今回説明するやつ ◎ Engine
◎ MountableEngine 上から順にRails本体の処理に近い(雑)
Rails pluginを作ってみる -Railtieでinitializerを拡張する- 作成したpluginでRails::Railtieのサブクラスを作り ます。 サンプルでぼく謹製のgemを見てみます。 Rails::Railtieを継承したクラスで, Initializerメソッドに ブロックでコードを渡す
Rails pluginを作ってみる -Railtieでrakeも拡張する- RailtieでRakeタスクも定義できる rake_tasksメソッド内のブロックで Rakefileをloadすればよい
Rails pluginを作ってみる -Railtieでrakeも拡張する- Rails標準のタスクたちと 一緒に表示される
Rails pluginを作ってみる -Railtieでgeneratorも拡張する- generatorブロックで実行するコードを requireする
Rails pluginを作ってみる -Railtieでgeneratorも拡張する- generatorは rails generate generatorで生成される ものと同じものを作ればよい Generatorクラスに実装した メソッドが上から順に実行される
Rails pluginを作ってみる -Railtieでgeneratorも拡張する- generatorといいつつ、何をしてもよい ※ 何らかの引数を与える必要がある
4. まとめ
まとめ Rails pluginを作るにはRailtieを使いたい ◎ Railtieを使うと、 ◦ Railsの機能を活かしつつ ◦ Railsを拡張/変更できる
まとめ Engine/MountableEngineはなんだったの? ◎ よりアプリケーションに近い拡張ができる ◦ gemでありながらルーティングを追加したり ◦ Controller/Model/Viewなどを独自に追加できる ◎ このへんの話はまた今度:)
まとめ Railsで「うーん:(」ということがあったら Railtieを使えば 簡単に改善できるかも!
まとめ 宣伝 EncryptedSecretsを いい感じに扱うgemを作ったよ:) Leml - Merge your yaml to
rails secrets, and it encrypted only leaf - https://github.com/onunu/leml
Rails pluginを作れば Railsの理解が深まる
ご静聴ありがとうございました!