Rails 5.2 ne génère pas de config / secrets.yml lors de la création d'une nouvelle application Il semble que config / credentials.yml.enc est maintenant généré à la place.
Si vous utilisez déjà une ancienne version de Rails dans un environnement de production et que vous souhaitez mettre à niveau vers Rails 5.2 Il semble que le mécanisme de config / credentials.yml.enc soit utilisé à la place de config / secrets.yml.
Jusqu'à Rails 5.2, il semble y avoir un moyen d'utiliser le classique config / secrets.yml. J'ai pensé à mettre à jour Rails6 et j'ai introduit config / credentials.yml.enc. Je vais l'afficher sous forme de mémorandum.
Étant donné que credentials.yml.enc ne peut pas être édité directement depuis l'éditeur, créez et éditez en spécifiant l'éditeur dans le terminal.
$ EDITOR=vim bundle exec credentials:edit
Au fait, si vous définissez ce qui suit dans .bash_profile etc., vous n'avez pas besoin de spécifier EDITOR = "vim".
~/.bash_profile
$ echo 'export EDITOR="vim"' >> ~/.bash_profile
$ source ~/.bash_profile
$ bundle exec credentials:edit
L'exécution de la commande ci-dessus générera config / credentials.yml.enc et config / master.key. Assurez-vous d'ajouter config / master.key à .gitignore car il n'est pas géré par git.
.gitignore
# Ignore master key for decrypting credentials and more.
/config/master.key
Modifiez le fichier config / credentials.yml.enc généré comme suit.
config/credentials.yml.enc
# aws:
# access_key_id: 123
# secret_access_key: 345
# Used as the base secret for all MessageVerifiers in Rails, including the one protecting cookies.
secret_key_base:
Puisque critique est utilisé dans l'environnement de production, définissez la variable suivante sur true dans config / environnements / production.rb.
config/environments/production.rb
config.require_master_key = true
Il ne peut être déployé que si master.key est placé dans shared / config de l'environnement de production. Transférez config / master.key vers le serveur de production avec la commande scp.
$ scp -i ~/.ssh/example.pem config/master.key [email protected]:/var/www/AppName/shared/config/master.key
ex. /var/www/AppName/shared/config/master.key
Vous pouvez également définir la variable d'environnement RAILS_MASTER_KEY dans le fichier bash du serveur d'environnement de production. Capistrano n'est pas lu même s'il est écrit en .bash_profile, il est donc nécessaire de l'écrire dans ~ / .bashrc. Exportez config / master.key sous RAILS_MASTER_KEY. En d'autres termes, définissez le .bashrc comme suit.
~/.bashrc
export RAILS_MASTER_KEY='XXXXXXXXXXXXXXXXXXX'
Ensuite, spécifiez un lien symbolique dans le fichier de configuration au moment du déploiement dans config / deploy.rb.
set :linked_files, fetch(:linked_files, []).push('config/master.key')
$ bundle exec cap production deploy
Recommended Posts