설정 값을 암호화하고 중복 설정을 줄일 수 있는 설정 파일 라이브러리를 만들었습니다

11137 단어 Ruby프로파일

개요


루비로 파일 주위를 설정하는gem 라이브러리를 만들었습니다.
이 라이브러리는 다음과 같은 내용을 지원합니다.
  • 설정값 암호화
  • 프로젝트의 일원 관리 설정
  • 설정값에 대한 주석 설정(#(주석)이 충족되지 않은 사용자(=나)
  • 명령 메뉴(템플릿 생성, 암호화 설정 쓰기, 일람 표시)
  • 설정 파일 주변에 다양한 혼란이 있었는데 그걸 단숨에 해결할 수 있는 프로그램 라이브러리를 만들려고 만들었어요.
    콩나물의 내용은 상술한 지원 내용의 반사에 불과하지만 설정값을 명문으로 텍스트 파일에 쓰고 싶지 않다.정식 사용, 개발용, 다른 각기 다른 설정 항목과 모든 공통된 설정 항목을 함께 쓰고 싶지 않은 서류.
    이런 생각이 출발점으로 만들어지고 있다.
    이 라이브러리의 테스트가 부족하기 때문에 규격과 신뢰성을 제대로 끓이지 못했다
    이보다 더 좋은 라이브러리가 있다면 댓글창에 알려주세요.
    그래, 그래.
    나는 앞으로 불만과 잘못을 찾아 천천히 자신을 위해 갱신할 것이라고 생각한다.(가능)

    구체적으로 어떻게 돌아가는지


    구성 파일 읽기


    파일이 하나뿐인 경우 설정


    다음 설정 파일이 있다고 가정하십시오.
    project_config.yml
    ---
    - :key_path: "/home/vagrant/.crypt_config/project_key.yml"
    - :animal:
        :value: |-
          ?0thjXJj2wR4kzp3EidmJ+bgWtYXs7/DZpTlcDFiLjDbsSB2YWnZEB+ovMTNC
          37kx
        :desc: ''
      :fruit:
        :value: |-
          ?wIGrSC/bf5om/rlfIlz7hAIOjaZFjIgw4ulguIKI7YpBrx4JOcmUo3cLH1vC
          eDeW
        :desc: This fruit color is yellow.
    
    프로그램에서 이것을 사용하면 다음과 같이 사용할 수 있다.
    require 'dinomischus'
    
    # ex1 
    hash = Dinomischus.load_file('config_project.yml')  
    # => {:animal=>"owl", 
    #     :fruit=>"Lemon"}
    p hash[:animal]  # => owl  
    p hash[:fruit]   # => Lemon 
    
    설명 (desc) 항목을 동시에 가져오려면 매개 변수에 추가하십시오 true.
    # ex2 
    hash = Dinomischus.load_file('project_config.yml', true)
    # => {:animal=>{:value=>"owl", :desc=>""},
    #     :fruit=>{:value=>"Lemon", :desc=>"This fruit color is yellow."} }
    
    p hash[:fruit][:value]  # => Lemon
    p hash[:fruit][:desc]   # => This fruit color is yellow.
    
    

    여러 프로파일이 있는 경우


    프로파일이 여러 개인 경우에도 함께 읽을 수 있습니다.
    이때 읽기 순서를 따로 정의해야 하는 파일이 필요합니다.(예: 프로젝트 config index.yml)
    또한 설정 항목이 중복되면 나중에 읽은 파일의 설정 값을 우선적으로 고려합니다.이 기능을 사용하면 기본값용 설정 파일을 미리 준비하여 개발 환경용 전용 설정 파일과 정식 환경용 전용 설정 파일을 분리할 수 있다.
    project_config_index.yml
    ---
    - :conf_path: "/path/to/config/project_config_default.yml"
    - :conf_path: "/path/to/config/project_config_product.yml"
    
    project_config_default.yml
    ---
    - :key_path: "/home/vagrant/.crypt_config/project_key.yml"
    - :animal:
        :value: |-
          ?0thjXJj2wR4kzp3EidmJ+bgWtYXs7/DZpTlcDFiLjDbsSB2YWnZEB+ovMTNC
          37kx
        :desc: ''
      :fruit:
        :value: |-
          ?wIGrSC/bf5om/rlfIlz7hAIOjaZFjIgw4ulguIKI7YpBrx4JOcmUo3cLH1vC
          eDeW
        :desc: This fruit color is yellow.
    
    project_config_product.yml
    ---
    - :key_path: "/home/vagrant/.crypt_config/project_key.yml"
    - :fruit:
        :value: banana
        :desc: 黄色い果物
      :furniture:
        :value: chair
        :desc:  座る物
    
    위의 내용을 읽을 때는 다음과 같습니다.
    require 'dinomischus'
    
    hash = Dinomischus.load_file('project_name_config_index.yml')
    # => {:animal=>"owl", 
    #     :fruit=>"banana",
    #     :furniture=>"chair"}
    
    : fruit의 설정값은 이후에 읽은 파일에 따라 banana로 변경됩니다.

    프로파일 생성/쓰기


    특히 1화에는 여러 가지 규정이 있어요.
    케이스 명령에서 메뉴를 호출해서 사용하세요.
    * 텍스트 파일을 복사하여 붙여넣을 수 있습니다.
    * 명문의 설정 값을 수정할 때 텍스트 편집기에서 충분히 편집할 수 있습니다.

    템플릿 파일 만들기


    설치가 완료되어야 합니다.
    $ cd /path/to/プロジェクトの設定ディレクトリ(config)の場所
    $ dinomischus
    ****** Welcome Egoistic Config ******
      1. Make Template
      2. Add or Update Crypted Value
      3. List Configs Simple
      4. List Configs Specify
      c. Clear Screen
      h. Ruby Command List
      z. End 
    -----------> Select Menu [1-4,c,h,z]: 
    
    ↑ 메뉴가 나오면 1을 선택한다.
    -----------> Select Menu [1-4,c,h,z]: 1
    
    ****** Make Template ******
    
    Input Your Config Prefix Name : ____
    
    
    1을 선택하면 구성 파일을 식별하는 데 사용할 첫 번째 문자열을 묻습니다.임의의 문자를 입력하십시오.(여기는 prj)
    (이미 존재하는 표지 문자가 있으면 파일 생성 처리를 건너뜁니다.)
    Input Your Config Prefix Name : prj
    Make File Default Value is ... 
      Key    File Place [/path/to/ホームディレクトリ/.crypt_config/prj_key.yml]
      Config File Place [/path/to/カレントディレクトリ/config/prj_config.yml]
      Define File Place [/path/to/カレントディレクトリ/config/prj_config_index.yml]
    
    Press Enter Key to Next Step... 
    
    작성된 파일을 확인하고 Enter 키를 누릅니다.
    * .crypt_configconfig 디렉토리가 없는 경우 생성됩니다.
    Done! 
    Next Step is Add Crypt Config|Plain Config to /path/to/カレントディレクトリ/config/prj_config.yml .  
    Add Config Value then You Select Menu No.2 .
    -----------> Select Menu [1-4,c,h,z]: 
    
    템플릿 생성을 완료합니다.
    그리고 완성된 파일을 적당히 복사하거나 보존 장소를 변경해 원하는 구성으로 만든다.
    디렉토리를 수정할 때 각 파일의 경로는 설정 파일의 시작 부분에 설명됩니다.
    그것도 같이 변경해 주세요.

    설정 값 추가(암호화)


    위와 같이 dinomischus 명령에서 메뉴를 호출합니다.
    $ cd /path/to/プロジェクトの設定ディレクトリ(config)の場所
    $ dinomischus
    ****** Welcome Egoistic Config ******
      1. Make Template
      2. Add or Update Crypted Value
      3. List Configs Simple
      4. List Configs Specify
      c. Clear Screen
      h. Ruby Command List
      z. End 
    -----------> Select Menu [1-4,c,h,z]: 
    
    ↑ 메뉴가 나오면 2를 선택한다.
    -----------> Select Menu [1-4,c,h,z]: 2
    
    ****** Crypted Value Setting ******"
      Input Your Config Path : config/prj_config.yml
      Input Your Key   : email
      Input Your Value : [email protected]
      Input Your Description : 設定用サンプルE-mail Address。実在しない。
    
    Done! 
    
    편집할 프로파일 경로를 입력한 후
    설정할 항목의 값을 입력합니다.
    설정값의 암호화는 이것으로 끝냅니다.
    여기까지 잘 진행되면 다음과 같은 설정 파일을 만들 수 있을 것 같다.
    config/prj_config_index.yml
    ---
    - :conf_path: "/home/vagrant/project/config/prj_config.yml"
    
    /path/to/project/config/prj_config.yml
    ---
    - :key_path: "~/.crypt_config/prj_key.yml"
    - :dummy:
        :value: ''
        :desc: ''
      :email:
        :value: |-
          ?Afo3Ccn307HZgQgBRwmyUQtCqDus3063wz1h9CIpRMIWdpRC07yfd2TG5jKa
          OrQiDDMfySjQIhWfL1Gt0UJ8tngSiUJT4gfgvjN7/+LHpdk=
        :desc: 設定用サンプルE-mail Address。実在しない。
    
    {:dummy => {:value: '', :desc:''}}가 마음에 들면 텍스트 편집기에서 삭제하세요.
    ~/.crypt_config/prj_key.yml
    ---
    :key:
      :type: sha256
      :value: eUIZzgKKnsJCoLcRX5pXXg
    

    설치 방법


    설치는 rubygem에 로그인되어 있으며 gem install을 통해 수행할 수 있습니다.
    $ gem install dinomischus
    

    문서별 설명


    파일 간의 관계도



    파일 정의(*config index.yml)


    프로필을 불러오는 순서를 정의합니다.
  • 위에서 아래로 읽기 읽기 읽기 읽기 순서.
  • 항목이 중복되도록 설정하면 이후에 읽은 값으로 덮어씁니다.
  • 두 개 이상의 파일을 정의할 수 있습니다.
  • 파일 설정(*config.yml)


    키 파일에 대한 링크 (키 path) 와 설정 값의 텍스트를 저장하고 있습니다.
  • {설정항목=>{value:'설정값', desc:'설명'}의 형식은 1세트입니다.
  • 설정값의 시작 문자는의 경우path에 기재된 암호를 복호화해 보십시오.
  • 암호화 후 설정값을 두 번 암호화 처리했다.(첫 번째는 값을 설정한 암호화 문자열과 소금량, 두 번째는 암호화 문자열과 소금량이 함께 암호화 문자열로 변한다. 같은 설정 값이라도 매번 암호화할 때마다 완전히 다른 설정 값으로 변한다.)
  • 설정값을 명문으로 설정할 때 텍스트 편집기를 사용하여 직접 편집하십시오.
  • 키 파일(*key.yml)


    암호화/복호화에 사용할 암호를 저장합니다.
  • 암호화 방식은sha256입니다.
  • 템플릿을 만들 때 자동으로 만들어지지만 암호화하기 전에 텍스트 편집기에서도 임의의 문자열이 될 수 있습니다.(암호화 후 암호를 변경할 때 복호화에 실패합니다.)
  • type:는 미래의 규격 확장을 위한 예비 프로젝트이다.지금은'sha256'의 선택입니다.
  • 출처


    KurokoSin/Dinomischus (Github) 공개.

    개발 환경


    Ubuntu 20.04LTS 
    ruby 2.6.3
    네.레일스가 아니라 루비가 썼어요.rails에서도 움직일 수 있어...

    좋은 웹페이지 즐겨찾기