为什么我的 Heroku 管道审查应用程序无法构建并出现错误:活动支持::加密文件::丢失密钥错误



我正在使用Heroku Pipeline。我的暂存应用是我的审阅应用的父应用,因此环境变量相同。

我的登台应用程序每次都构建,没有问题。但是,我所有的评论应用程序都无法构建。问题似乎是评论应用程序缺少加密密钥。

我已经运行了heroku config:set RAILS_MASTER_KEY=##### -a my-app-staging-pr-99来设置评论应用程序的主密钥,但我仍然收到相同的构建错误。

注意:- 我正在使用带有凭据的 Rails 5.2.3- 我的生产中有config.read_encrypted_secrets = true.rb- 我的凭据中设置了">secret_key_base.yml

请参阅以下日志:

原木:

-----> Preparing app for Rails asset pipeline
       Running: rake assets:precompile
       rake aborted!
       ActiveSupport::EncryptedFile::MissingKeyError: Missing encryption key to decrypt file with. Ask your team for your master key and write it to /tmp/build_0ef8f846f0fdc1456a3e91ed8dc095e6/config/master.key or put it in the ENV['RAILS_MASTER_KEY'].
       /tmp/build_0ef8f846f0fdc1456a3e91ed8dc095e6/vendor/bundle/ruby/2.6.0/gems/activesupport-5.2.3/lib/active_support/encrypted_file.rb:96:in `handle_missing_key'
       /tmp/build_0ef8f846f0fdc1456a3e91ed8dc095e6/vendor/bundle/ruby/2.6.0/gems/activesupport-5.2.3/lib/active_support/encrypted_file.rb:37:in `key'
       /tmp/build_0ef8f846f0fdc1456a3e91ed8dc095e6/vendor/bundle/ruby/2.6.0/gems/activesupport-5.2.3/lib/active_support/encrypted_file.rb:41:in `read'
       /tmp/build_0ef8f846f0fdc1456a3e91ed8dc095e6/vendor/bundle/ruby/2.6.0/gems/activesupport-5.2.3/lib/active_support/encrypted_configuration.rb:21:in `read'
       /tmp/build_0ef8f846f0fdc1456a3e91ed8dc095e6/vendor/bundle/ruby/2.6.0/gems/activesupport-5.2.3/lib/active_support/encrypted_configuration.rb:33:in `config'
       /tmp/build_0ef8f846f0fdc1456a3e91ed8dc095e6/vendor/bundle/ruby/2.6.0/gems/activesupport-5.2.3/lib/active_support/encrypted_configuration.rb:38:in `options'
       /tmp/build_0ef8f846f0fdc1456a3e91ed8dc095e6/vendor/bundle/ruby/2.6.0/gems/activesupport-5.2.3/lib/active_support/core_ext/module/delegation.rb:271:in `method_missing'
       /tmp/build_0ef8f846f0fdc1456a3e91ed8dc095e6/config/environments/production.rb:102:in `block in <main>'
       /tmp/build_0ef8f846f0fdc1456a3e91ed8dc095e6/vendor/bundle/ruby/2.6.0/gems/railties-5.2.3/lib/rails/railtie.rb:216:in `instance_eval'
       /tmp/build_0ef8f846f0fdc1456a3e91ed8dc095e6/vendor/bundle/ruby/2.6.0/gems/railties-5.2.3/lib/rails/railtie.rb:216:in `configure'
       /tmp/build_0ef8f846f0fdc1456a3e91ed8dc095e6/config/environments/production.rb:1:in `<main>'
       /tmp/build_0ef8f846f0fdc1456a3e91ed8dc095e6/vendor/bundle/ruby/2.6.0/gems/bootsnap-1.4.4/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:22:in `require'
       /tmp/build_0ef8f846f0fdc1456a3e91ed8dc095e6/vendor/bundle/ruby/2.6.0/gems/bootsnap-1.4.4/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:22:in `block in require_with_bootsnap_lfi'
       /tmp/build_0ef8f846f0fdc1456a3e91ed8dc095e6/vendor/bundle/ruby/2.6.0/gems/bootsnap-1.4.4/lib/bootsnap/load_path_cache/loaded_features_index.rb:92:in `register'
       /tmp/build_0ef8f846f0fdc1456a3e91ed8dc095e6/vendor/bundle/ruby/2.6.0/gems/bootsnap-1.4.4/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:21:in `require_with_bootsnap_lfi'
       /tmp/build_0ef8f846f0fdc1456a3e91ed8dc095e6/vendor/bundle/ruby/2.6.0/gems/bootsnap-1.4.4/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:30:in `require'
       /tmp/build_0ef8f846f0fdc1456a3e91ed8dc095e6/vendor/bundle/ruby/2.6.0/gems/activesupport-5.2.3/lib/active_support/dependencies.rb:291:in `block in require'
       /tmp/build_0ef8f846f0fdc1456a3e91ed8dc095e6/vendor/bundle/ruby/2.6.0/gems/activesupport-5.2.3/lib/active_support/dependencies.rb:257:in `load_dependency'
       /tmp/build_0ef8f846f0fdc1456a3e91ed8dc095e6/vendor/bundle/ruby/2.6.0/gems/activesupport-5.2.3/lib/active_support/dependencies.rb:291:in `require'
       /tmp/build_0ef8f846f0fdc1456a3e91ed8dc095e6/vendor/bundle/ruby/2.6.0/gems/railties-5.2.3/lib/rails/engine.rb:602:in `block (2 levels) in <class:Engine>'
       /tmp/build_0ef8f846f0fdc1456a3e91ed8dc095e6/vendor/bundle/ruby/2.6.0/gems/railties-5.2.3/lib/rails/engine.rb:601:in `each'
       /tmp/build_0ef8f846f0fdc1456a3e91ed8dc095e6/vendor/bundle/ruby/2.6.0/gems/railties-5.2.3/lib/rails/engine.rb:601:in `block in <class:Engine>'
       /tmp/build_0ef8f846f0fdc1456a3e91ed8dc095e6/vendor/bundle/ruby/2.6.0/gems/railties-5.2.3/lib/rails/initializable.rb:32:in `instance_exec'
       /tmp/build_0ef8f846f0fdc1456a3e91ed8dc095e6/vendor/bundle/ruby/2.6.0/gems/railties-5.2.3/lib/rails/initializable.rb:32:in `run'
       /tmp/build_0ef8f846f0fdc1456a3e91ed8dc095e6/vendor/bundle/ruby/2.6.0/gems/railties-5.2.3/lib/rails/initializable.rb:61:in `block in run_initializers'
       /tmp/build_0ef8f846f0fdc1456a3e91ed8dc095e6/vendor/bundle/ruby/2.6.0/gems/railties-5.2.3/lib/rails/initializable.rb:50:in `each'
       /tmp/build_0ef8f846f0fdc1456a3e91ed8dc095e6/vendor/bundle/ruby/2.6.0/gems/railties-5.2.3/lib/rails/initializable.rb:50:in `tsort_each_child'
       /tmp/build_0ef8f846f0fdc1456a3e91ed8dc095e6/vendor/bundle/ruby/2.6.0/gems/railties-5.2.3/lib/rails/initializable.rb:60:in `run_initializers'
       /tmp/build_0ef8f846f0fdc1456a3e91ed8dc095e6/vendor/bundle/ruby/2.6.0/gems/railties-5.2.3/lib/rails/application.rb:361:in `initialize!'
       /tmp/build_0ef8f846f0fdc1456a3e91ed8dc095e6/config/environment.rb:5:in `<main>'
       /tmp/build_0ef8f846f0fdc1456a3e91ed8dc095e6/vendor/bundle/ruby/2.6.0/gems/bootsnap-1.4.4/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:22:in `require'
       /tmp/build_0ef8f846f0fdc1456a3e91ed8dc095e6/vendor/bundle/ruby/2.6.0/gems/bootsnap-1.4.4/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:22:in `block in require_with_bootsnap_lfi'
       /tmp/build_0ef8f846f0fdc1456a3e91ed8dc095e6/vendor/bundle/ruby/2.6.0/gems/bootsnap-1.4.4/lib/bootsnap/load_path_cache/loaded_features_index.rb:92:in `register'
       /tmp/build_0ef8f846f0fdc1456a3e91ed8dc095e6/vendor/bundle/ruby/2.6.0/gems/bootsnap-1.4.4/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:21:in `require_with_bootsnap_lfi'
       /tmp/build_0ef8f846f0fdc1456a3e91ed8dc095e6/vendor/bundle/ruby/2.6.0/gems/bootsnap-1.4.4/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:30:in `require'
       /tmp/build_0ef8f846f0fdc1456a3e91ed8dc095e6/vendor/bundle/ruby/2.6.0/gems/activesupport-5.2.3/lib/active_support/dependencies.rb:291:in `block in require'
       /tmp/build_0ef8f846f0fdc1456a3e91ed8dc095e6/vendor/bundle/ruby/2.6.0/gems/activesupport-5.2.3/lib/active_support/dependencies.rb:257:in `load_dependency'
       /tmp/build_0ef8f846f0fdc1456a3e91ed8dc095e6/vendor/bundle/ruby/2.6.0/gems/activesupport-5.2.3/lib/active_support/dependencies.rb:291:in `require'
       /tmp/build_0ef8f846f0fdc1456a3e91ed8dc095e6/vendor/bundle/ruby/2.6.0/gems/railties-5.2.3/lib/rails/application.rb:337:in `require_environment!'
       /tmp/build_0ef8f846f0fdc1456a3e91ed8dc095e6/vendor/bundle/ruby/2.6.0/gems/railties-5.2.3/lib/rails/application.rb:520:in `block in run_tasks_blocks'
       /tmp/build_0ef8f846f0fdc1456a3e91ed8dc095e6/vendor/bundle/ruby/2.6.0/gems/sprockets-rails-3.2.1/lib/sprockets/rails/task.rb:62:in `block (2 levels) in define'
       /tmp/build_0ef8f846f0fdc1456a3e91ed8dc095e6/vendor/bundle/ruby/2.6.0/gems/rake-12.3.2/exe/rake:27:in `<top (required)>'
       Tasks: TOP => environment
       (See full trace by running task with --trace)
 !
 !     Precompiling assets failed.
 !
 !     Push rejected, failed to compile Ruby app.
 !     Push failed

app.json

{
  "scripts": {
    "postdeploy": "rails db:migrate"
  }
}

几周来我一直在尝试解决此问题,但一直无法弄清楚。我是新手,所以如果我在这里错过了一些明显的东西,我深表歉意。

一种方法是将RAILS_MASTER_KEY添加到环境变量 您的暂存应用。然后在您的评论应用中,您可以从 暂存应用。

通过执行生成密钥

rake secret

在您的项目目录中

可以使用以下命令在暂存应用上设置配置变量

heroku config:set RAILS_MASTER_KEY=<KEY GENERATED BY rake secret> -a my-app-staging

现在,在您的 app.json 中,您可以添加

"env": {
    "RAILS_MASTER_KEY": {
     "required": true
}

这样,每个新创建的评论应用程序都将从暂存应用程序中获取其RAILS_MASTER_KEY

希望对您有所帮助。