Отсутствует «secret_key_base» для «производственной» среды, но она находится в моем зашифрованном файле

#ruby-on-rails

#ruby-on-rails

Вопрос:

Я работаю над приложением rails 6.0.2, и, похоже, все работает нормально в разработке (я могу создать базу данных и запустить приложение на локальном хосте). Тем не менее, я застрял, пытаясь заставить его работать в рабочей среде. У меня есть master.key файл, содержащий мой ключ, и credentials.yml.enc файл, содержащий: secret_key_base: 123... (с моим реальным ключом, конечно).

При этом я пытаюсь запустить RAILS_ENV=production rails db:setup , но он всегда терпит неудачу со следующей ошибкой:

 rails aborted!
ArgumentError: Missing `secret_key_base` for 'production' environment, set this string with `rails credentials:edit`
/Users/victor/.rvm/gems/ruby-2.6.3/gems/railties-6.0.2.1/lib/rails/application.rb:580:in `validate_secret_key_base'
/Users/victor/.rvm/gems/ruby-2.6.3/gems/railties-6.0.2.1/lib/rails/application.rb:423:in `secret_key_base'
/Users/victor/.rvm/gems/ruby-2.6.3/gems/devise-4.7.1/lib/devise/secret_key_finder.rb:24:in `key_exists?'
/Users/victor/.rvm/gems/ruby-2.6.3/gems/devise-4.7.1/lib/devise/secret_key_finder.rb:16:in `find'
/Users/victor/.rvm/gems/ruby-2.6.3/gems/devise-4.7.1/lib/devise/rails.rb:37:in `block in <class:Engine>'
/Users/victor/.rvm/gems/ruby-2.6.3/gems/railties-6.0.2.1/lib/rails/initializable.rb:32:in `instance_exec'
/Users/victor/.rvm/gems/ruby-2.6.3/gems/railties-6.0.2.1/lib/rails/initializable.rb:32:in `run'
/Users/victor/.rvm/gems/ruby-2.6.3/gems/railties-6.0.2.1/lib/rails/initializable.rb:61:in `block in run_initializers'
/Users/victor/.rvm/gems/ruby-2.6.3/gems/railties-6.0.2.1/lib/rails/initializable.rb:60:in `run_initializers'
/Users/victor/.rvm/gems/ruby-2.6.3/gems/railties-6.0.2.1/lib/rails/application.rb:363:in `initialize!'
/Users/victor/Documents/SaaS projects/myblog/config/environment.rb:5:in `<main>'
/Users/victor/.rvm/gems/ruby-2.6.3/gems/bootsnap-1.4.6/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:23:in `require'
/Users/victor/.rvm/gems/ruby-2.6.3/gems/bootsnap-1.4.6/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:23:in `block in require_with_bootsnap_lfi'
/Users/victor/.rvm/gems/ruby-2.6.3/gems/bootsnap-1.4.6/lib/bootsnap/load_path_cache/loaded_features_index.rb:92:in `register'
/Users/victor/.rvm/gems/ruby-2.6.3/gems/bootsnap-1.4.6/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:22:in `require_with_bootsnap_lfi'
/Users/victor/.rvm/gems/ruby-2.6.3/gems/bootsnap-1.4.6/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:31:in `require'
/Users/victor/.rvm/gems/ruby-2.6.3/gems/zeitwerk-2.3.0/lib/zeitwerk/kernel.rb:23:in `require'
/Users/victor/.rvm/gems/ruby-2.6.3/gems/activesupport-6.0.2.1/lib/active_support/dependencies.rb:325:in `block in require'
/Users/victor/.rvm/gems/ruby-2.6.3/gems/activesupport-6.0.2.1/lib/active_support/dependencies.rb:291:in `load_dependency'
/Users/victor/.rvm/gems/ruby-2.6.3/gems/activesupport-6.0.2.1/lib/active_support/dependencies.rb:325:in `require'
/Users/victor/.rvm/gems/ruby-2.6.3/gems/railties-6.0.2.1/lib/rails/application.rb:339:in `require_environment!'
/Users/victor/.rvm/gems/ruby-2.6.3/gems/railties-6.0.2.1/lib/rails/application.rb:515:in `block in run_tasks_blocks'
/Users/victor/.rvm/gems/ruby-2.6.3/gems/railties-6.0.2.1/lib/rails/commands/rake/rake_command.rb:23:in `block in perform'
/Users/victor/.rvm/gems/ruby-2.6.3/gems/railties-6.0.2.1/lib/rails/commands/rake/rake_command.rb:20:in `perform'
/Users/victor/.rvm/gems/ruby-2.6.3/gems/railties-6.0.2.1/lib/rails/command.rb:48:in `invoke'
/Users/victor/.rvm/gems/ruby-2.6.3/gems/railties-6.0.2.1/lib/rails/commands.rb:18:in `<main>'
/Users/victor/.rvm/gems/ruby-2.6.3/gems/bootsnap-1.4.6/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:23:in `require'
/Users/victor/.rvm/gems/ruby-2.6.3/gems/bootsnap-1.4.6/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:23:in `block in require_with_bootsnap_lfi'
/Users/victor/.rvm/gems/ruby-2.6.3/gems/bootsnap-1.4.6/lib/bootsnap/load_path_cache/loaded_features_index.rb:92:in `register'
/Users/victor/.rvm/gems/ruby-2.6.3/gems/bootsnap-1.4.6/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:22:in `require_with_bootsnap_lfi'
/Users/victor/.rvm/gems/ruby-2.6.3/gems/bootsnap-1.4.6/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:31:in `require'
/Users/victor/.rvm/gems/ruby-2.6.3/gems/activesupport-6.0.2.1/lib/active_support/dependencies.rb:325:in `block in require'
/Users/victor/.rvm/gems/ruby-2.6.3/gems/activesupport-6.0.2.1/lib/active_support/dependencies.rb:291:in `load_dependency'
/Users/victor/.rvm/gems/ruby-2.6.3/gems/activesupport-6.0.2.1/lib/active_support/dependencies.rb:325:in `require'
/Users/victor/Documents/SaaS projects/myblog/bin/rails:9:in `<top (required)>'
/Users/victor/.rvm/gems/ruby-2.6.3/gems/spring-2.1.0/lib/spring/client/rails.rb:28:in `load'
/Users/victor/.rvm/gems/ruby-2.6.3/gems/spring-2.1.0/lib/spring/client/rails.rb:28:in `call'
/Users/victor/.rvm/gems/ruby-2.6.3/gems/spring-2.1.0/lib/spring/client/command.rb:7:in `call'
/Users/victor/.rvm/gems/ruby-2.6.3/gems/spring-2.1.0/lib/spring/client.rb:30:in `run'
/Users/victor/.rvm/gems/ruby-2.6.3/gems/spring-2.1.0/bin/spring:49:in `<top (required)>'
/Users/victor/.rvm/gems/ruby-2.6.3/gems/spring-2.1.0/lib/spring/binstub.rb:11:in `load'
/Users/victor/.rvm/gems/ruby-2.6.3/gems/spring-2.1.0/lib/spring/binstub.rb:11:in `<top (required)>'
/Users/victor/Documents/SaaS projects/myblog/bin/spring:15:in `require'
/Users/victor/Documents/SaaS projects/myblog/bin/spring:15:in `<top (required)>'
bin/rails:3:in `load'
bin/rails:3:in `<main>'
Tasks: TOP => db:setup => db:schema:load_if_ruby => db:create => db:load_config => environment
(See full trace by running task with --trace)
  

Я действительно в замешательстве, потому что в нем говорится, что нет secret_key_base , но оно определено в моем credentials.yml.enc (это единственное, что там есть!)

Я просмотрел множество других вопросов stackoverflow и увидел, что эта проблема обычно связана со старым способом Rails обрабатывать зашифрованные файлы (но я в версии 6.0.2, так что это не должно быть проблемой …). Единственный другой ответ, который я нашел, предлагал удалить master.key и credentials.yml.enc и создать новые rails credentials:edit , что я и сделал, но это ничего не изменило.

Ответ №1:

Укажите среду, которая должна помочь с этой проблемой.

 rails credentials:edit --environment production