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
Rails と人魚の話/rails-and-mermaid
Search
Masatoshi Moritsuka
April 04, 2024
Programming
0
200
Rails と人魚の話/rails-and-mermaid
Masatoshi Moritsuka
April 04, 2024
Tweet
Share
More Decks by Masatoshi Moritsuka
See All by Masatoshi Moritsuka
パターンマッチ使ってるかい?(kyobashi.rb)/use-ruby-s-pattern-matching-on-kyobashi-rb
sanfrecce_osaka
0
93
ApplicationController の継承を分割してエラーを減らした話/dividing-application-controller
sanfrecce_osaka
1
170
Input object ではじめる入力値検証/input-value-validation-using-input-object
sanfrecce_osaka
0
360
実例で学ぶRailsアプリケーションデバッグ入門 〜ログインできちゃってました編〜/rails-application-debug-introduction
sanfrecce_osaka
2
640
String#split何もわかっていなかった/didn_t_know_anything_about_string_split
sanfrecce_osaka
0
110
String#split何もわかっていなかった/didn-t-know-anything-about-string-split
sanfrecce_osaka
0
50
パターンマッチ使ってるかい?/use-ruby-s-pattern-matching?
sanfrecce_osaka
0
730
新しいコミュニティを立ち上げるぞい/launch-new-community
sanfrecce_osaka
0
130
コミュニティ・勉強会の情報収集について/about-collecting-community-information
sanfrecce_osaka
0
96
Other Decks in Programming
See All in Programming
プログラマのための音楽入門
cheebow
4
540
Web技術を駆使してユーザーの画面を「録画」する
yukukotani
13
6.3k
Rustではじめる負荷試験
skanehira
5
1.1k
Rubyのobject_id
qnighy
6
1.3k
Kotlin 2.0 and Beyond
antonarhipov
2
130
Uncharted packages (Laravel Live Denmark)
freekmurze
0
140
僕が思い描くTypeScriptの未来を勝手に先取りする
yukukotani
5
770
Swiftコードバトル必勝法
toshi0383
0
140
BasicBasic認証
sadnessojisan
5
2.5k
2024 컴포즈 정원사
jisungbin
0
140
Polars を Kaggle コンペで使ってみた(LMSYS Chatbot Arena)
kohecchi
1
360
Swiftで高速フーリエ変換してオーディオビジュアライザーを作る / iOSDC Japan 2024 Day1 Track D
kyome22
2
460
Featured
See All Featured
VelocityConf: Rendering Performance Case Studies
addyosmani
321
23k
For a Future-Friendly Web
brad_frost
173
9.3k
GraphQLとの向き合い方2022年版
quramy
43
13k
Designing for humans not robots
tammielis
248
25k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
26
1.9k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
88
15k
Build your cross-platform service in a week with App Engine
jlugia
228
18k
We Have a Design System, Now What?
morganepeng
48
7.1k
How to name files
jennybc
75
97k
No one is an island. Learnings from fostering a developers community.
thoeni
18
2.9k
In The Pink: A Labor of Love
frogandcode
139
22k
Put a Button on it: Removing Barriers to Going Fast.
kastner
58
3.4k
Transcript
Rails と人魚の話 森塚 真年(@sanfrecce_osaka) 2024/04/04 Omotesando.rb#96 #omotesandorb
自己紹介 森塚 真年 @sanfrecce-osaka or @sanfrecce_osaka from: 大阪府枚方市 趣味: コミュニティ・勉強会
Machida.rb ・Hirakata.rb 株式会社エンペイ Ruby3.2/Rails7.0 Node.js v18/Vue.js 3.3/Vuetify 3.4 最近 Layout Cop を全部ドキュメント読んで設 定した
本編
ER 図
何使ってますか?
選択肢 gem gem 以外 DB クライアント(e.g. table plus) rails-erd erd
rails_erd_mermaid rails-mermaid_erd plant_erd
そもそもの要件 graphviz への依存がない エンジニア以外も触れるようにしたい エンペイではエンジニア以外も SQL を書いて いる
選ばれたのは
rails-mermaid_erd でした
rails-mermaid_erd 導入の手順 Gemfile に gem "rails-mermaid_erd", group: :development を追加 bin/rails
mermaid_erd Rails のER 図をMermaid で柔軟に生成できるGem を 作りました Repository Demo Page
できること ER 図の各種エクスポート・コピー Mermaid ・Markdown ・SVG ・PNG リレーションのプレビュー リレーションのコメントの表示 カラムの非表示
キーの表示 カラムコメントの表示 表示対象の絞り込み
できないこと テーブルのコメントの表示 mermaid のコメントとしてなら吐けるので PR 出す予定
裏側の仕組み 1. で model の 定義から Hash を組み立て 2. の
window.SCHEMA_DATA に 1 で組み立てた Hash を json に変換して bind 3. ファイルとして出力(JS 部分は cdn の Vue を使っ ているので html ファイル単体で動く) RailsMermaidErd::Builder.model_data templates/index.html.erb
ところで
そもそもの要件 graphviz への依存がない エンジニア以外も触れるようにしたい エンペイではエンジニア以外も SQL を書いて いる
🤔
そうだ!
migration に hook させて git で 管理しよう! %w(db:migrate db:schema:load).each do
|task| Rake::Task[task].enhance do Rake::Task['mermaid_erd'].invoke if Rails.env.development? end end
あとはこうして models/documentation.rb module Documentation; end
こうして ActiveAdmin.register Documentation do actions :index controller do def index
redirect_to admin_documentations_erd_path end end end
こうして config/routes.rb namespace :admin do namespace :documentations do resource :erd,
only: :show, format: 'html' end end
こうじゃ! config/mermaid_erd.yml result_path: app/views/admin/documentations/erds/show.html.erb
最後に rails-mermaid_erd べんり migration に hook させて更新して git 管理すれば view
として扱える activeadmin 等の管理画面の view ファイルとして 扱えば認証も解決 ( 今後は) 社内で ER 図 の勉強会 をやっていき!
ご清聴 ありがとうございました
None