Как создать отсутствующую secret_key_base на AWS - PullRequest
0 голосов
/ 29 февраля 2020

Я пытаюсь запустить приложение Rails 6.0.2.1, Ruby 2.6.5 в рабочем режиме, используя AWS EB CLI, однако я продолжаю сталкиваться с этой проблемой. Я пробовал каждое решение, которое существует на первых двух страницах результатов поиска Google, но безрезультатно.

Это мои журналы ошибок:

ruby-2.0.0-p648
  ruby-2.1.10
  ruby-2.2.10
  ruby-2.3.8
  ruby-2.4.9
  ruby-2.5.7
  ruby-2.6.5
  ruby-current ]]
  +++ RUBIES+=("$dir"/*)
  +++ for dir in '"$PREFIX/opt/rubies"' '"$HOME/.rubies"'
  +++ [[ -d /.rubies ]]
  +++ unset dir
  +++ cat /etc/elasticbeanstalk/.ruby_version
  ++ chruby 2.6.5
  ++ case "$1" in
  ++ local dir match
  ++ for dir in '"${RUBIES[@]}"'
  ++ dir=/opt/rubies/ruby-1.9.3-p551
  ++ case "${dir##*/}" in
  ++ for dir in '"${RUBIES[@]}"'
  ++ dir=/opt/rubies/ruby-2.0.0-p648
  ++ case "${dir##*/}" in
  ++ for dir in '"${RUBIES[@]}"'
  ++ dir=/opt/rubies/ruby-2.1.10
  ++ case "${dir##*/}" in
  ++ for dir in '"${RUBIES[@]}"'
  ++ dir=/opt/rubies/ruby-2.2.10
  ++ case "${dir##*/}" in
  ++ for dir in '"${RUBIES[@]}"'
  ++ dir=/opt/rubies/ruby-2.3.8
  ++ case "${dir##*/}" in
  ++ for dir in '"${RUBIES[@]}"'
  ++ dir=/opt/rubies/ruby-2.4.9
  ++ case "${dir##*/}" in
  ++ for dir in '"${RUBIES[@]}"'
  ++ dir=/opt/rubies/ruby-2.5.7
  ++ case "${dir##*/}" in
  ++ for dir in '"${RUBIES[@]}"'
  ++ dir=/opt/rubies/ruby-2.6.5
  ++ case "${dir##*/}" in
  ++ match=/opt/rubies/ruby-2.6.5
  ++ for dir in '"${RUBIES[@]}"'
  ++ dir=/opt/rubies/ruby-current
  ++ case "${dir##*/}" in
  ++ [[ -z /opt/rubies/ruby-2.6.5 ]]
  ++ shift
  ++ chruby_use /opt/rubies/ruby-2.6.5 ''
  ++ [[ ! -x /opt/rubies/ruby-2.6.5/bin/ruby ]]
  ++ [[ -n '' ]]
  ++ export RUBY_ROOT=/opt/rubies/ruby-2.6.5
  ++ RUBY_ROOT=/opt/rubies/ruby-2.6.5
  ++ export RUBYOPT=
  ++ RUBYOPT=
  ++ export PATH=/opt/rubies/ruby-2.6.5/bin:/opt/elasticbeanstalk/lib/ruby/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/sbin:/sbin:/bin
  ++ PATH=/opt/rubies/ruby-2.6.5/bin:/opt/elasticbeanstalk/lib/ruby/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/sbin:/sbin:/bin
  +++ /opt/rubies/ruby-2.6.5/bin/ruby -
  ++ eval 'export RUBY_ENGINE=ruby;
  export RUBY_VERSION=2.6.5;
  export GEM_ROOT="/opt/rubies/ruby-2.6.5/lib/ruby/gems/2.6.0";'
  +++ export RUBY_ENGINE=ruby
  +++ RUBY_ENGINE=ruby
  +++ export RUBY_VERSION=2.6.5
  +++ RUBY_VERSION=2.6.5
  +++ export GEM_ROOT=/opt/rubies/ruby-2.6.5/lib/ruby/gems/2.6.0
  +++ GEM_ROOT=/opt/rubies/ruby-2.6.5/lib/ruby/gems/2.6.0
  ++ ((  0 != 0  ))
  + cd /var/app/ondeck
  + su -s /bin/bash -c 'bundle exec /opt/elasticbeanstalk/support/scripts/check-for-rake-task.rb assets:precompile' webapp
  `/home/webapp` is not a directory.
  Bundler will use `/tmp/bundler20200229-17441-1xumk3r17441' as your home directory temporarily.
  + '[' false == true ']'
  + su -s /bin/bash -c 'bundle exec rake assets:precompile' webapp
  `/home/webapp` is not a directory.
  Bundler will use `/tmp/bundler20200229-17445-s2fu1t17445' as your home directory temporarily.
  rake aborted!
  ArgumentError: Missing `secret_key_base` for 'production' environment, set this string with `rails credentials:edit`
  /var/app/ondeck/config/environment.rb:5:in `<main>'
  /opt/rubies/ruby-2.6.5/bin/bundle:23:in `load'
  /opt/rubies/ruby-2.6.5/bin/bundle:23:in `<main>'
  Tasks: TOP => environment
  (See full trace by running task with --trace) (Executor::NonZeroExitStatus)


[2020-02-29T14:56:22.022Z] INFO  [3700]  - [Application update app-61df-200229_165115@2/AppDeployStage0/AppDeployPreHook/11_asset_compilation.sh] : Activity failed.
[2020-02-29T14:56:22.022Z] INFO  [3700]  - [Application update app-61df-200229_165115@2/AppDeployStage0/AppDeployPreHook] : Activity failed.
[2020-02-29T14:56:22.022Z] INFO  [3700]  - [Application update app-61df-200229_165115@2/AppDeployStage0] : Activity failed.
[2020-02-29T14:56:22.023Z] INFO  [3700]  - [Application update app-61df-200229_165115@2] : Completed activity. Result:
  Application update - Command CMD-AppDeploy failed

Я пытался установить master.key, попытался установить secret_base_key через ENV, но ни одна из них не сработала.

Несмотря на то, что в моем окружении используется master.key, оно никогда не сохраняется в моем окружении S SH.

Я тоже не удается запустить rails credentials:edit в моей среде S SH и запустить его локально, после чего развертывание в рабочей среде ничего не дает, изменения никогда не сохраняются на сервере S SH, master.key никогда не генерируется, несмотря на то, что все настройки верны.

Я застрял на этом четыре дня, и мне любопытно, стоит ли переходить на другую платформу, возможно, Heroku или Google?

1 Ответ

0 голосов
/ 01 марта 2020

Существует два различных способа установки переменной конфигурации SECRET_KEY_BASE.

  1. Установите эту переменную с помощью переменных среды консоли Elasti c Beanstalk. В вашей среде EB нажмите Конфигурация -> Программное обеспечение и добавьте переменную среды для SECRET_KEY_BASE (все заглавные буквы).

  2. Установите переменную RAILS_MASTER_KEY через Elasti c Beanstalk настройте переменную среды консоли и задайте secret_key_base в файле зашифрованных учетных данных:

    • В вашей среде EB выберите Конфигурация -> Программное обеспечение и добавьте переменную среды для RAILS_MASTER_KEY ( все заглавные буквы). Это значение должно быть тем, которое находится в вашем файле master.key.

    • Локально, запустите rails credentials:edit и добавьте следующую строку в ваш файл:

    secret_key_base: substitute-your-very-long-secret-key-here
    

    Сохраните, закройте и зафиксируйте файл. Разверните эти изменения в своей среде Elasti c Beanstalk.

...