rails-erd 분할 후 yaml의 설정 파일마다 자동으로 ERD 생성

8879 단어 erdrails-erdRails

개시하다


지난번'rails-erd는 어떻게 실체와 관련 정보를 얻습니까'에 이어 rails-erd에 관한 보도다.
rails-erd를 사용하여 명령을 사용하여 ERD를 자동으로 생성할 수 있습니다.다만, ERD에 모든 모델을 표시하려면 보기 어렵다.그러면 이번에는 각 그룹의 모델을 위해yaml의 설정 파일을 준비하고 하나의 명령으로 모든 그룹을 통일적으로 생성하는 ERD의 실현을 소개합니다.
참고로 엔브로스가 개발한MCS의 모든 모델을 하나의 ERD에 포함시켜 만들면 이런 느낌이 든다.😭
(※ 해상도를 낮춘다.)

전체 이미지


먼저 완성된 문서 구성을 소개한다.
erd
 ├── config
 │    └── xxx.yml     # 設定ファイルたち
 ├── xxx.png          # 生成されたERDたち
lib
 └── task/erd.rake    # タスク
erd/config/부하는 XXX입니다.yml 설정 파일 설정
  • lib/task/erd.rake에서 작업 만들기
  • erd.rake에서 만든 작업을 수행할 때erd/부하에서 자동으로 ERD 생성🎉
  • 이런 느낌의 물건을 만들다.

    rails-erd 가져오기


    rails-erd의 도입 방법에 대해 다른 소개문이 많기 때문에 이 글에서 생략합니다.

    구성 파일 설정


    모든 파일은 모든 옵션을 써야 하기 때문에 공통 옵션을 기록하는 공통 파일을 준비해야 한다. 개별 파일은 공통 파일과 차이만 쓴다.

    일반 파일


    우선 공통 파일을 준비하고 옵션을 기록합니다.
    common.yml
    attributes:
      - content
      - foreign_key
    disconnected: true
    filename: erd/dummy
    filetype: png
    indirect: false
    inheritance: true
    markup: true
    notation: crowsfoot
    orientation: vertical
    polymorphism: false
    sort: false
    warn: false
    title: dummy
    exclude: null
    only: null
    only_recursion_depth: null
    prepend_primary: false
    cluster: false
    splines: spline
    
    ※ 참고로 다음 명령은 어떤 옵션이 있는지 확인할 수 있습니다.
    $ erd -h
    

    개별 파일


    다음은 개별 서류를 작성한다.
    여기에는 titleonly만 지정하여 매우 간단합니다.😊
    xxx.yml
    title: sample title
    only:
      - XXX
      - YYY
      - ZZZ
    
    ※ 개별 파일의 파일 이름과 생성된 ERD의 파일 이름이 다르면 알 수 없으므로 옵션의 filename은 작업 중 자동으로 개별 파일의 파일 이름으로 덮어씁니다.

    작업 생성

    Kernel.#system를 사용하면 system("bundle", "exec", "erd") 형식으로 rails-erd가 준비한 작업을 수행할 수 있습니다. 더욱 간결하기 위해서 저는 RailsERD:::CLI를 사용하여 실현하고 싶습니다.
    ※ RailsERD: CLI는 이름과 같이 CLI부터 ERD 생성을 수행하는 데 사용되는 클래스입니다.
    erd.rake
    # RailsERD::CLI を利用できるようにするため、rails_erd/cli を読み込む
    require "rails_erd/cli"
    
    namespace :erd do
      desc "ERDの一括生成"
      task bulk_generate: :environment do
        common_file = Pathname.new("erd/config/common.yml")
        common_options = YAML.load_file(common_file)
    
        partial_files = Pathname.new("erd/config").glob("*").reject {|file| file == common_file }
        partial_files.each do |partial_file|
          partial_options = YAML.load_file(partial_file)
          partial_file_name = File.basename(partial_file, ".*")
    
          # 共通オプションと個別オプションの結合
          # 個別ファイルのファイル名で filename を上書き
          # キーを文字列からシンボルに変更する
          options = common_options
                      .merge(partial_options)
                      .merge({ filename: "erd/#{partial_file_name}" })
                      .symbolize_keys
    
          # ERD生成の開始
          RailsERD::CLI.new(Dir.pwd, options).start
        end
      end
    end
    
    이렇게 되면 다음 명령은 ERD를 통일적으로 생성합니다!
    $ bundle exec rake erd:bulk_generate
    

    모델 그룹 나누기 팁


    상기 ERD의 대량 생성 방법에 대한 설명은 이미 끝났지만 모델의 그룹을 나누는 것도 일반적인 방법이 아니기 때문에 필자는 그룹을 나누면서 얻은 지식을 공유하고 싶습니다.

    기능별 그룹화

  • 예) 로그인 기능, 알림 설정 기능, etc.
  • 이점
  • 기능별로 분류하여 상업 논리를 이해하기 쉽다
  • 시계의 수량을 적당히 줄일 수 있다
  • 한 ERD에 포함된 시계는 최대 10개 정도입니다.


    만약 ERD에 10개 이상의 책상이 있다면 기능을 분할할 수 있는지 연구할 수 있다.
  • 이점
  • 어느 표가 중요한지 바로 알아라
  • 매운 맛을 완화시킨다
  • 파일 이름이 기능 센터에 가까운 표 이름

  • 예) 알림이 설정된 메인 테이블이 notification_settings이면 파일 이름을 notification_setting.yml
  • 로 설정합니다.
  • 이점
  • 파일 이름과 표 이름을 결합하면 어떤 기능인지 추측하기 쉽다
  • 알기 센터 표
  • 파일 이름에 대한 일관성
  • 보충
  • 기능 중심의 표는 중간표로 기능의 명칭으로 적합하지 않거나 이미 기능에 이름이 있는 경우 표명과 다른 이름을 짓는 것이 좋다
  • 최후


    rails-erd를 사용하여 여러 개의 ERD를 통일적으로 생성하는 방법과 모델을 그룹화하는 비결을 소개했다.신규 멤버로 프로젝트에 합류할 때 ERD가 있다면 비즈니스 논리에 대한 이해가 원활해질 수 있어 감사하다.만약 이 기사가 ERD를 준비하는 데 참고가 된다면 정말 좋겠다.

    참고 자료

  • rails-erd - Github
  • 좋은 웹페이지 즐겨찾기