[RUBY] Erstellt eine egoistische Konfigurationsdateibibliothek

Überblick

Ich habe mit Ruby eine Edelsteinbibliothek um die Einstellungsdatei erstellt. Diese Bibliothek unterstützt:

Ich hatte viel Dunst in der Einstellungsdatei und wollte eine Bibliothek, die alles auf einmal lösen kann. Der Inhalt des Dunstes ist nur die Kehrseite der obigen Unterstützung, aber ich möchte die Einstellungen nicht in Klartext in eine Textdatei schreiben. Ich möchte nicht verschiedene Einstellungselemente für Produktion, Entwicklung usw. und alle gängigen Einstellungselemente in dieselbe Datei schreiben. Wir haben solche Gedanken als Ausgangspunkt geschaffen.

~~ Diese Bibliothek wurde nicht vollständig getestet, daher sind die Spezifikationen und die Zuverlässigkeit nicht erschöpft. Wenn Sie eine bessere Bibliothek haben, teilen Sie uns dies bitte in den Kommentaren mit. ,,, ~~ Gefun Gefun. Von nun an werde ich Unzufriedenheiten und Fehler finden und sie langsam und langsam für mich selbst aktualisieren. (Vielleicht)

Wie es konkret funktioniert

Einstellungsdatei lesen

Wenn es nur eine Einstellungsdatei gibt

Angenommen, Sie haben die folgende Konfigurationsdatei.

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.

Wenn Sie dies im Programm verwenden, können Sie es wie folgt verwenden.

require 'dinomischus'
 
# ex1 
hash = Dinomischus.load_file('config_project.yml')  
# => {:animal=>"owl", 
#     :fruit=>"Lemon"}
p hash[:animal]  # => owl  
p hash[:fruit]   # => Lemon 

Wenn Sie auch das Beschreibungselement (desc) erhalten möchten, fügen Sie dem Argument `` `true``` hinzu.

# 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.

Wenn mehrere Einstellungsdateien vorhanden sind

Selbst wenn mehrere Einstellungsdateien vorhanden sind, können diese gleichzeitig gelesen werden. In diesem Fall ist eine separate Datei erforderlich, die die Lesereihenfolge definiert. (Project_config_index.yml im Beispiel) Wenn die Einstellungselemente dupliziert werden, erhält der Einstellungswert der später gelesenen Datei Priorität. Auf diese Weise ist es möglich, eine Einstellungsdatei für den Standardwert vorzubereiten und die Einstellungsdatei für die Entwicklungsumgebung und die Einstellungsdatei für die Produktionsumgebung zu trennen.

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:Gelbe Frucht
  :furniture:
    :value: chair
    :desc:Dinge, auf denen man sitzen kann

Nach dem Lesen des obigen wird es wie folgt sein.

require 'dinomischus'
 
hash = Dinomischus.load_file('project_name_config_index.yml')
# => {:animal=>"owl", 
#     :fruit=>"banana",
#     :furniture=>"chair"}

Der Einstellwert von: `Frucht``` wurde in Abhängigkeit von der später gelesenen Datei in` Banane``` geändert.

Einstellungsdatei erstellen / schreiben

Vor allem zum ersten Mal gibt es also verschiedene Regeln Verwenden Sie es, indem Sie ein Menü über einen Shell-Befehl aufrufen.

Vorlagendatei erstellen

(Es wird davon ausgegangen, dass die später beschriebene Installation abgeschlossen wurde.)

$ cd /path/to/Projektkonfigurationsverzeichnis(config)Ort
$ 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]: 

Wählen Sie 1, wenn das Menü ↑ angezeigt wird.

-----------> Select Menu [1-4,c,h,z]: 1
  
****** Make Template ******
  
Input Your Config Prefix Name : ____

Wenn Sie 1 auswählen, werden Sie nach der ersten Zeichenfolge zur Identifizierung der Einstellungsdatei gefragt. Bitte geben Sie ein beliebiges Zeichen ein. (Hier prj) (Wenn bereits eine Datei mit dem einmal festgelegten Identifikationszeichen vorhanden ist, wird der Dateierstellungsprozess übersprungen.)

Input Your Config Prefix Name : prj
Make File Default Value is ... 
  Key    File Place [/path/to/Home-Verzeichnis/.crypt_config/prj_key.yml]
  Config File Place [/path/to/Aktuelles Verzeichnis/config/prj_config.yml]
  Define File Place [/path/to/Aktuelles Verzeichnis/config/prj_config_index.yml]
 
Press Enter Key to Next Step... 

Überprüfen Sie die erstellte Datei und drücken Sie die Eingabetaste.

Done! 
Next Step is Add Crypt Config|Plain Config to /path/to/Aktuelles Verzeichnis/config/prj_config.yml .  
Add Config Value then You Select Menu No.2 .
-----------> Select Menu [1-4,c,h,z]: 

Damit ist die Vorlagenerstellung abgeschlossen. Kopieren Sie anschließend die fertige Datei entsprechend oder ändern Sie das Speicherziel, um sie in die gewünschte Konfiguration zu ändern. Wenn Sie das Verzeichnis ändern, wird der Pfad jeder Datei am Anfang der Einstellungsdatei geschrieben. Bitte ändern Sie das auch.

Hinzufügen eines Einstellwerts (Verschlüsselung)

Rufen Sie das Menü wie zuvor über den Befehl `` `dinomischus``` auf.

$ cd /path/to/Projektkonfigurationsverzeichnis(config)Ort
$ 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]: 

Wählen Sie 2, wenn das Menü ↑ angezeigt wird.

-----------> 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 :Probe einstellen E.-Mail Adresse. Es existiert nicht.
 
Done! 

Nachdem Sie den Pfad der Einstellungsdatei eingegeben haben, den Sie bearbeiten möchten Geben Sie den Wert ein, den Sie für jedes angezeigte Element festlegen möchten. Das ist alles zum Verschlüsseln der Einstellungen. Wenn alles gut geht, sollten Sie eine Konfigurationsdatei wie die folgende haben.

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:Probe einstellen E.-Mail Adresse. Es existiert nicht.

yaml:~/.crypt_config/prj_key.yml


---
:key:
  :type: sha256
  :value: eUIZzgKKnsJCoLcRX5pXXg

Wie installiert man

Da die Installation in Ruby Gem registriert ist, kann sie per Gem-Installation durchgeführt werden.

$ gem install dinomischus

Beschreibung jeder Datei

Beziehungsdiagramm zwischen jeder Datei

ConfigFileRelation.png

Definitionsdatei (`` `* _ config_index.yml```)

Definiert die Lesereihenfolge der Konfigurationsdateien.

Konfigurationsdatei (`` `* _ config.yml```)

Der Link zur Schlüsseldatei (key_path) und der Text des Einstellwerts werden gespeichert.

Schlüsseldatei (`` `* _ key.yml```)

Speichert das zur Verschlüsselung / Entschlüsselung verwendete Passwort.

Quelle

Es ist verfügbar unter KurokoSin / Dinomischus (Github).

Entwicklungsumgebung

Ubuntu 20.04LTS  ruby 2.6.3 ist. Ich mache es für Rubin, nicht für Schienen. Ich wünschte, ich könnte auch auf Schienen fahren. .. .. ..

Recommended Posts

Erstellt eine egoistische Konfigurationsdateibibliothek
[CentOS, Eclipse] Lädt Bibliotheksdateien in C-Projekt
Menüprogramm erstellt
Was ist eine JAR-Datei?
[Java] Erstellen Sie eine temporäre Datei