Rails 5.2 generiert beim Erstellen einer neuen App keine config / secret.yml Es scheint, dass stattdessen config / credentials.yml.enc generiert wird.
Wenn Sie bereits mit einer älteren Version von Rails in einer Produktionsumgebung arbeiten und ein Upgrade auf Rails 5.2 durchführen möchten Es scheint, dass der Mechanismus von config / credentials.yml.enc anstelle von config / secret.yml verwendet wird.
Bis zu Rails 5.2 scheint es eine Möglichkeit zu geben, die herkömmliche Datei config / Secrets.yml zu verwenden. Ich habe über ein Upgrade von Rails6 nachgedacht und config / credentials.yml.enc eingeführt. Ich werde es als Memorandum veröffentlichen.
Da credentials.yml.enc nicht direkt vom Editor aus bearbeitet werden kann, erstellen und bearbeiten Sie es, indem Sie den Editor im Terminal angeben.
$ EDITOR=vim bundle exec credentials:edit
Wenn Sie in .bash_profile usw. Folgendes festlegen, müssen Sie übrigens nicht EDITOR = "vim" angeben.
~/.bash_profile
$ echo 'export EDITOR="vim"' >> ~/.bash_profile
$ source ~/.bash_profile
$ bundle exec credentials:edit
Wenn Sie den obigen Befehl ausführen, werden config / credentials.yml.enc und config / master.key generiert. Stellen Sie sicher, dass Sie config / master.key zu .gitignore hinzufügen, da es nicht von git verwaltet wird.
.gitignore
# Ignore master key for decrypting credentials and more.
/config/master.key
Ändern Sie die generierte Datei config / credentials.yml.enc wie folgt.
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:
Da in der Produktionsumgebung kritisch verwendet wird, setzen Sie die folgende Variable in config / environment / Production.rb auf true.
config/environments/production.rb
config.require_master_key = true
Es kann nur bereitgestellt werden, wenn master.key in der freigegebenen / config der Produktionsumgebung abgelegt ist. Übertragen Sie config / master.key mit dem Befehl scp auf den Produktionsserver.
$ 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
Alternativ können Sie die Umgebungsvariable RAILS_MASTER_KEY in der Bash-Datei des Produktionsumgebungsservers festlegen. Capistrano wird nicht gelesen, auch wenn es in .bash_profile geschrieben ist. Daher muss es in ~ / .bashrc geschrieben werden. Exportieren Sie config / master.key als RAILS_MASTER_KEY. Mit anderen Worten, stellen Sie die .bashrc wie folgt ein.
~/.bashrc
export RAILS_MASTER_KEY='XXXXXXXXXXXXXXXXXXX'
Geben Sie als Nächstes in der Konfigurationsdatei zum Zeitpunkt der Bereitstellung in config / deploy.rb einen symbolischen Link an.
set :linked_files, fetch(:linked_files, []).push('config/master.key')
$ bundle exec cap production deploy
Recommended Posts