Ruby의 DSL로 graphiviz를 조작하여 도표를 그리다

4255 단어 GraphvizRuby

Ruby의 DSL로 graphiviz를 조작하여 도표를 그리다


개요


Gviz gem에서 Ruby의 DSL 작업인 graphiviz를 사용하여 차트를 그립니다.
도입 목적은 시스템 개발과 관련된 디자인 자료 등 그림이 필요할 때
일반 텍스트를 사용하여 도면 작성 및 유지보수를 관리합니다.
수동으로 도면을 작성하고 유지하는 것은 매우 번거롭다.
일반 텍스트를 사용하여 관리하므로 번거롭지 않고 자동화할 수 있습니다.
이력 관리도 쉬워졌다.
※ 내 직장에서는 일상적인 업무에서 수동으로 조정해야 할수록 미관을 추구할 기회가 적다
어떤 것을 말하면, 개발자 내의 정보 공유를 위해 개발자가 보면 알 수 있다.

절차.


graphiviz 설치


Windows 7 환경에 설치합니다.
  • 안정적인 msi 설치 프로그램을 사용합니다.
    http://www.graphviz.org/pub/graphviz/stable/windows/graphviz-2.38.msi
  • 설치기를 따라 설치
  • 경로를 통과합니다.예를 들어, Windows 7 환경에서 마법사에 따라 설치한 경우C:\Program Files (x86)\Graphviz 2.38\bin 경로를 통과합니다.
  • gvizgem 설치

    gem i gviz --no-ri --no-doc
    
    또는 bundle install

    시험해 보다


    규격.


    OSS로 구성된 개발진이 사용하는 환경 구성도를 만들어 보세요.
    팀 멤버와 자체 구축 환경의 결과를 공유합니다.
    새 멤버가 늘어날 때 설명하기 위해 사용했다고 가정하자.
    <구성 요소>
  • 웨어하우스 브라우저=>GitLab
  • 메신저 =>Kandan
  • CI 도구 = >GitLab CI
  • CI 실행 = >GitLab CI
  • 사용자 = >User
  • <의존 관계>

  • 사용자
  • 깃랩에 push, issue 제작 등
  • Kandan에서 채팅을 하거나 채팅을 하면 Hubot에 지시하는 명령
  • 에 사용된다.
  • 드물지만 CI
  • 를 수동으로 실행

  • GitLab
  • GitLab CI에 push를 트리거하여 실행 요청
  • push/issue/merge request를 트리거로 웹 훅에 등록된 Hubo의 웹 서버에 전송

  • GitLab CI
  • GitLab CI Runner에 CI 실행 요청
  • CI의 실행 결과를 웹 훅에 등록된 Hubot의 웹 서버에 전송

  • GitLab CI Runner
  • CI를 실행하고 결과를 GiitLab CI
  • 에 보냅니다.

  • Hubot
  • Hubbot 웹 서버에서 받은 데이터에 따라 Kandan에게 채팅 메시지 보내기
  • Kandan 기반 채팅 메시지를 서버에서 임의로 처리하거나 반환

  • Kandan
  • Hubot에 Script 실행 명령 보내기
  • Gviz DSL


    루비로 이 파일을 실행하면
    oss_agile_dev_env.dot, oss_agile_dev_env.png을 생성합니다.
    require "gviz"
    
    Graph do
      route :Hubot => [:Kandan]
      route :Kandan => [:Hubot]
      route :GitLab => [:Hubot, :GitLabCI]
      route :GitLabCI => [:Hubot, :GitLabCiRunner, :Hubot]
      route :GitLabCiRunner => [:GitLabCI]
      route :User => [:Kandan, :GitLab, :GitLabCI]
    
      save(:oss_agile_dev_env, :png)
    end
    

    출력 파일

    digraph G {
      Hubot;
      Kandan;
      GitLab;
      GitLabCI;
      GitLabCiRunner;
      User;
      Hubot -> Kandan;
      Kandan -> Hubot;
      GitLab -> Hubot;
      GitLab -> GitLabCI;
      GitLabCI -> Hubot;
      GitLabCI -> GitLabCiRunner;
      GitLabCiRunner -> GitLabCI;
      User -> Kandan;
      User -> GitLab;
      User -> GitLabCI;
    }
    

    출력 파일(png)


    좋은 웹페이지 즐겨찾기