J'ai créé une bibliothèque de gemmes autour du fichier de réglage avec ruby. Cette bibliothèque prend en charge:
J'avais beaucoup de brouillard autour du fichier de paramètres et je voulais une bibliothèque qui pourrait tout résoudre en même temps. Le contenu de la brume est juste le revers du support ci-dessus, mais je ne veux pas écrire les paramètres en texte brut dans un fichier texte. Je ne veux pas écrire différents éléments de paramétrage pour la production, le développement, etc. et tous les éléments de paramétrage courants dans le même fichier. Nous avons créé de telles pensées comme point de départ.
~~ Cette bibliothèque n'a pas été entièrement testée, donc les spécifications et la fiabilité n'ont pas été entièrement affinées. Si vous avez une meilleure bibliothèque que celle-ci, veuillez nous le faire savoir dans les commentaires. ,,, ~~ Gefun Gefun. A partir de maintenant, je vais trouver des points d'insatisfaction et des bugs et les mettre à jour lentement et lentement pour moi. (Peut-être)
Supposons que vous ayez le fichier de configuration suivant.
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.
Lors de son utilisation dans le programme, il peut être utilisé comme suit.
require 'dinomischus'
# ex1
hash = Dinomischus.load_file('config_project.yml')
# => {:animal=>"owl",
# :fruit=>"Lemon"}
p hash[:animal] # => owl
p hash[:fruit] # => Lemon
Si vous souhaitez également obtenir l'élément de description (desc), ajoutez
true``` à l'argument.
# 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.
Même s'il existe plusieurs fichiers de paramètres, ils peuvent être lus en même temps. Dans ce cas, un fichier distinct définissant l'ordre de lecture est requis. (Project_config_index.yml dans l'exemple) Si les éléments de réglage sont dupliqués, la valeur de réglage du fichier lu ultérieurement est prioritaire. En utilisant cela, il est possible de préparer un fichier de paramètres pour la valeur par défaut et de séparer le fichier de paramètres pour l'environnement de développement et le fichier de paramètres pour l'environnement de production.
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:Fruit jaune
:furniture:
:value: chair
:desc:Choses sur lesquelles s'asseoir
Après avoir lu ce qui précède, ce sera comme suit.
require 'dinomischus'
hash = Dinomischus.load_file('project_name_config_index.yml')
# => {:animal=>"owl",
# :fruit=>"banana",
# :furniture=>"chair"}
La valeur de réglage de:
fruit '' a changé en `` banane '' en fonction du fichier lu plus tard.
Surtout pour la première fois, il existe différentes règles, donc Utilisez-le en appelant le menu à partir d'une commande shell.
(On suppose que l'installation décrite plus loin est terminée.)
$ cd /path/to/Répertoire de configuration du projet(config)Emplacement
$ 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]:
Sélectionnez 1 lorsque le menu ↑ apparaît.
-----------> Select Menu [1-4,c,h,z]: 1
****** Make Template ******
Input Your Config Prefix Name : ____
Si vous sélectionnez 1, il vous sera demandé la première chaîne de caractères pour l'identification du fichier de réglage. Veuillez saisir n'importe quel caractère. (Ici prj) (S'il existe un fichier qui existe déjà avec le caractère d'identification qui a été défini une fois, le processus de création de fichier sera ignoré.)
Input Your Config Prefix Name : prj
Make File Default Value is ...
Key File Place [/path/to/Annuaire personnel/.crypt_config/prj_key.yml]
Config File Place [/path/to/Répertoire actuel/config/prj_config.yml]
Define File Place [/path/to/Répertoire actuel/config/prj_config_index.yml]
Press Enter Key to Next Step...
Vérifiez le fichier créé et appuyez sur la touche Entrée.
.crypt_config '' et
config '' n'existent pas, créez-les.Done!
Next Step is Add Crypt Config|Plain Config to /path/to/Répertoire actuel/config/prj_config.yml .
Add Config Value then You Select Menu No.2 .
-----------> Select Menu [1-4,c,h,z]:
Ceci termine la création du modèle. Après cela, copiez le fichier terminé comme il convient ou modifiez la destination de sauvegarde pour le modifier dans la configuration souhaitée. Si vous changez de répertoire, le chemin de chaque fichier est écrit au début du fichier de paramètres. Veuillez changer cela également.
Appelez le menu depuis la commande `` dinomischus '' comme précédemment.
$ cd /path/to/Répertoire de configuration du projet(config)Emplacement
$ 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]:
Sélectionnez 2 lorsque le menu ↑ apparaît.
-----------> 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 :Échantillon de réglage E-adresse mail. Cela n'existe pas.
Done!
Après avoir entré le chemin du fichier de configuration que vous souhaitez modifier Entrez la valeur que vous souhaitez définir pour chaque élément qui apparaît. C'est tout pour crypter les paramètres. Si tout se passe bien, vous devriez avoir un fichier de configuration comme celui ci-dessous.
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:Échantillon de réglage E-adresse mail. Cela n'existe pas.
{: dummy => {: value: '' ,: desc: ''}}
``, supprimez-le avec un éditeur de texte.yaml:~/.crypt_config/prj_key.yml
---
:key:
:type: sha256
:value: eUIZzgKKnsJCoLcRX5pXXg
Puisque l'installation est enregistrée dans ruby gem, elle peut être effectuée par gem install.
$ gem install dinomischus
Définit l'ordre de lecture des fichiers de configuration.
Le lien vers le fichier de clé (key_path) et le texte de la valeur de réglage sont enregistrés.
Stocke le mot de passe utilisé pour le cryptage / décryptage.
type: `` est un élément préliminaire pour une future extension des spécifications. Actuellement, "sha256" est une option.Il est disponible sur KurokoSin / Dinomischus (Github).
Ubuntu 20.04LTS ruby 2.6.3 est. Je le fais pour le rubis, pas pour les rails. J'aimerais aussi pouvoir me déplacer sur des rails. .. .. ..