Slide 1

Slide 1 text

Rails と人魚の話 森塚 真年(@sanfrecce_osaka) 2024/04/04 Omotesando.rb#96 #omotesandorb

Slide 2

Slide 2 text

自己紹介 森塚 真年 @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 を全部ドキュメント読んで設 定した

Slide 3

Slide 3 text

本編

Slide 4

Slide 4 text

ER 図

Slide 5

Slide 5 text

何使ってますか?

Slide 6

Slide 6 text

選択肢 gem gem 以外 DB クライアント(e.g. table plus) rails-erd erd rails_erd_mermaid rails-mermaid_erd plant_erd

Slide 7

Slide 7 text

そもそもの要件 graphviz への依存がない エンジニア以外も触れるようにしたい エンペイではエンジニア以外も SQL を書いて いる

Slide 8

Slide 8 text

選ばれたのは

Slide 9

Slide 9 text

rails-mermaid_erd でした

Slide 10

Slide 10 text

rails-mermaid_erd 導入の手順 Gemfile に gem "rails-mermaid_erd", group: :development を追加 bin/rails mermaid_erd Rails のER 図をMermaid で柔軟に生成できるGem を 作りました Repository Demo Page

Slide 11

Slide 11 text

できること ER 図の各種エクスポート・コピー Mermaid ・Markdown ・SVG ・PNG リレーションのプレビュー リレーションのコメントの表示 カラムの非表示 キーの表示 カラムコメントの表示 表示対象の絞り込み

Slide 12

Slide 12 text

できないこと テーブルのコメントの表示 mermaid のコメントとしてなら吐けるので PR 出す予定

Slide 13

Slide 13 text

裏側の仕組み 1. で model の 定義から Hash を組み立て 2. の window.SCHEMA_DATA に 1 で組み立てた Hash を json に変換して bind 3. ファイルとして出力(JS 部分は cdn の Vue を使っ ているので html ファイル単体で動く) RailsMermaidErd::Builder.model_data templates/index.html.erb

Slide 14

Slide 14 text

ところで

Slide 15

Slide 15 text

そもそもの要件 graphviz への依存がない エンジニア以外も触れるようにしたい エンペイではエンジニア以外も SQL を書いて いる

Slide 16

Slide 16 text

🤔

Slide 17

Slide 17 text

そうだ!

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

あとはこうして models/documentation.rb module Documentation; end

Slide 20

Slide 20 text

こうして ActiveAdmin.register Documentation do actions :index controller do def index redirect_to admin_documentations_erd_path end end end

Slide 21

Slide 21 text

こうして config/routes.rb namespace :admin do namespace :documentations do resource :erd, only: :show, format: 'html' end end

Slide 22

Slide 22 text

こうじゃ! config/mermaid_erd.yml result_path: app/views/admin/documentations/erds/show.html.erb

Slide 23

Slide 23 text

最後に rails-mermaid_erd べんり migration に hook させて更新して git 管理すれば view として扱える activeadmin 等の管理画面の view ファイルとして 扱えば認証も解決 ( 今後は) 社内で ER 図 の勉強会 をやっていき!

Slide 24

Slide 24 text

ご清聴 ありがとうございました

Slide 25

Slide 25 text

No content