Я пытался решить эту проблему несколько дней go.
И что я узнал:
Первая попытка
I попробуйте использовать учетные данные для каждой среды с
$ EDITOR=nano rails credentials:edit --environment development
$ EDITOR=nano rails credentials:edit --environment staging
$ EDITOR=nano rails credentials:edit --environment production
Мои файлы кредитов и ключи были помещены в config/credentials
.
Я установил необходимые переменные прямо там. Это удобное решение, но мы столкнулись с проблемой при нашем развертывании в кластере Kubernetes, когда наши devopses хотят использовать helm
config. Поэтому предопределенные учетные данные для этого случая неприменимы.
Вторая попытка
После этого я попытался использовать переменные ENV в моих файлах учетных данных. К сожалению, это тоже не работает:
secret_key_base: <%= ENV['SECRET_KEY_BASE'] %>
Последняя попытка
Наконец, я сделал постепенное снижение до gem config
с настройками по умолчанию, когда вы размещаете настройки для каждой среды:
config/settings.yml
config/settings/development.yml
config/settings/production.yml
config/settings/test.yml
А мой settings.yml
файл состоит только из переменных ENV, например:
secret_key_base: <%= ENV['SECRET_KEY_BASE'] %>
db:
host: <%= ENV['DB_HOST'] %>
port: <%= ENV['DB_PORT'] %>
pool: <%= ENV['DB_POOL'] %>
user: <%= ENV['DB_USER'] %>
password: <%= ENV['DB_PASSWORD'] %>
database: <%= ENV['DB_DATABASE'] %>
...
Это работоспособное решение, но кажется шагом назад.
Как я теперь знаю, мы не можем использовать ENV-переменные в учетных данных любым простым способом.