[RUBY] Verwendung von credentials.yml.enc aus Rails 5.2

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.

1. Generieren und konfigurieren Sie credentials.yml.enc und master.key

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

2. Automatische Bereitstellung durch Capistrano

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')

3. Wenn Sie mit Capistrano bereitstellen können, sind Sie fertig.

$ bundle exec cap production deploy

Recommended Posts

Verwendung von credentials.yml.enc aus Rails 5.2
Verwendung von MySQL im Rails-Tutorial
[Rails] Verwendung von Enum
[Rails] Verwendung von Auswahlfeldern in Ransack
[Rails] Verwendung von Enum
[Rails] Verwendung der Validierung
[Rails] So verwenden Sie authenticate_user!
[Rails] Verwendung von PostgreSQL in einer Vagrant-Umgebung
[Schienen] Verwendung von Scope
[Rails] Wie man Edelstein "devise" benutzt
Wie man Lombok im Frühling benutzt
[Schienen] Verwendung von Geräten (Hinweis)
[Rails] Verwendung von Flash-Nachrichten
[Rails] Verwendung von Active Storage
So installieren Sie jQuery in Rails 6
Wie verwende ich Klassen in Java?
[Einführung in Rails] Verwendung von Render
So installieren Sie Swiper in Rails
So implementieren Sie Suchfunktionen in Rails
So ändern Sie den App-Namen in Rails
Verwendung des benannten Volumes in docker-compose.yml
So fügen Sie ein Video in Rails ein
[Rails] Verwendung von ActiveRecord :: Bitemporal (BiTemporalDataModel)
[Schienen] Verwendung der Kartenmethode
Verwendung von Docker in VSCode DevContainer
[Rails] So konfigurieren Sie das Routing in Ressourcen
[Ruby on Rails] Verwendung von redirect_to
So implementieren Sie Ranking-Funktionen in Rails
[Hinweis] Verwendung von Rails 6 Devise + Cancancan
Verwendung von Umgebungsvariablen in RubyOnRails
[Rails] Verwendung von video_tag zum Anzeigen von Videos
Verstehe in 5 Minuten !! Wie man Docker benutzt
[Rails] Verwendung der Hilfsmethode, Confimartion
Verwendung von ExpandableListView in Android Studio
Verwendung von Map
Wie schreibe ich Rails
Wie benutzt man rbenv?
Verwendung mit_option
Verwendung von fields_for
Verwendung von java.util.logging
Verwendung der Karte
Verwendung von collection_select
Wie benutzt man active_hash! !!
Verwendung von MapStruct
Verwendung von TreeSet
So deinstallieren Sie Rails
[Verwendung des Etiketts]
Wie man Identität benutzt
Verwenden Sie Bilder mit Schienen
Verwendung von Dozer.mapper
Wie benutzt man Gradle?