Как устранить эту ошибку?
Первое, что я заметил, это
secret_key_base: <%= ENV["SECRET_KEY_BASE"] %>
Я подозреваю, что вам не нужен вызов шаблона ERB.
secret_key_base: ENV["SECRET_KEY_BASE"]
Переменная ENV отсутствует в команде printenv.После того, как я проведу развертывание
Во-вторых, мне интересно, разветвлена ли новая оболочка в вашей цепочке.Если так, то переменные набора оболочки не будут доступны, потому что новая разветвленная оболочка, естественно, не имеет ее.Таким образом, единственный способ обойти это, например, установить вещи.$HOME/.profile
или ваши снаряды profile
.
В-третьих, я бы решил использовать какой-нибудь вспомогательный камень для решения этой проблемы.Есть такие, как например. Figaro и вот простая статья, показывающая вам как ее использовать .
Я также попытался вручную добавить SECRET_KEY_BASE в / etc / profile
Добавление вещей в /etc/profile
- плохая идея.Он используется для установки общесистемных переменных среды для пользовательских оболочек.Вероятно, вам нужно $HOME/.profile
.
при выходе из root
Я бы настоятельно рекомендовал не запускать вещи под root
, так как это побеждает всю GNU /Настройка безопасности Linux.Если вы хотите притвориться, что запускаете все как root
, используйте учетную запись пользователя vanilla, например, с.fakeroot
.
execute "export SECRET_KEY_BASE = bundle exec rake secret
"
Такая обработка секретов немного неуклюжа, не слишком безопасна и не удобна.Возможно, золотым стандартом в настоящее время является Хранилище Хашикорпа , которое также имеет замечательный Rails-адаптер .
Эта система специально разработана с учетом требований безопасности.Может быть, излишним для вашей текущей ситуации, но я подумал, стоит упомянуть.
Удачи и надеюсь, что это рецензия поможет!