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
490
Railtieでpluginを作ろう!
Meguro.rb #6の発表資料です
onunu
August 24, 2017
Tweet
Share
More Decks by onunu
See All by onunu
othlotech
onunu
1
3.1k
ビッグデータと機械学習の狭間で -データエンジニアに求められる役割-
onunu
5
1.3k
Railsと考えるデータベースのインデックス戦略
onunu
4
1.7k
地球とSQL
onunu
2
530
Other Decks in Technology
See All in Technology
自分の軸足を見つけろ
tsuemura
2
680
Automatically generating types by running tests
sinsoku
2
1.7k
JPOUG Tech Talk #12 UNDO Tablespace Reintroduction
nori_shinoda
1
140
食べログが挑む!飲食店ネット予約システムで自動テスト無双して手動テストゼロを実現する戦略
hagevvashi
3
410
低レイヤを知りたいPHPerのためのCコンパイラ作成入門 / Building a C Compiler for PHPers Who Want to Dive into Low-Level Programming
tomzoh
0
220
LangfuseでAIエージェントの 可観測性を高めよう!/Enhancing AI Agent Observability with Langfuse!
jnymyk
1
210
開発視点でAWS Signerを考えてみよう!! ~コード署名のその先へ~
masakiokuda
3
160
LLM as プロダクト開発のパワードスーツ
layerx
PRO
1
230
AWSLambdaMCPServerを使ってツールとMCPサーバを分離する
tkikuchi
1
2.9k
LiteXとオレオレCPUで作る自作SoC奮闘記
msyksphinz
0
510
“パスワードレス認証への道" ユーザー認証の変遷とパスキーの関係
ritou
1
550
Classmethod AI Talks(CATs) #21 司会進行スライド(2025.04.17) / classmethod-ai-talks-aka-cats_moderator-slides_vol21_2025-04-17
shinyaa31
0
550
Featured
See All Featured
Documentation Writing (for coders)
carmenintech
69
4.7k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
16k
Producing Creativity
orderedlist
PRO
344
40k
What’s in a name? Adding method to the madness
productmarketing
PRO
22
3.4k
Bash Introduction
62gerente
611
210k
How to train your dragon (web standard)
notwaldorf
90
6k
Side Projects
sachag
452
42k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
135
33k
Building a Modern Day E-commerce SEO Strategy
aleyda
40
7.2k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
251
21k
The Power of CSS Pseudo Elements
geoffreycrofte
75
5.8k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
5
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の理解が深まる
ご静聴ありがとうございました!