ruby-on-rails - “生产”环境缺少“secret_key_base”,但它在我的加密文件中
问题描述
我正在开发一个 6.0.2 rails 应用程序,并且在开发中一切似乎都运行良好(我可以创建数据库并在 localhost 上运行该应用程序)。但是,我一直试图让它在生产中工作。我有一个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
,但它是在 my 中定义的credentials.yml.enc
(它是那里唯一的东西!)
我查看了一堆其他stackoverflow问题,发现这个问题通常是由于Rails必须处理加密文件的旧方式(但我在6.0.2所以这不应该是一个问题......)。我发现的唯一其他答案建议删除master.key
andcredentials.yml.enc
并创建新的rails credentials:edit
,我这样做了,但它没有改变任何东西。
解决方案
指定环境应该有助于解决这个问题。
rails credentials:edit --environment production
推荐阅读
- java - Camunda:如何将变量从父进程传递到子进程。(由事件开始)
- c# - 当我没有创建类型时,C# 如何访问这个通用列表?
- excel - Excel VBA - 使用通配符检查文件是否存在并打开文件
- python - Python/Regex - 匹配两个字符之间的字符,匹配字符之前或之后的任何内容
- php - php 中 SQL SELECT 查询的返回类型是什么,是数组、对象还是什么?
- python - 在启动时自动启动python脚本?
- ios - 音乐应用程序现在在动画中播放视图控制器幻灯片
- selenium - 同时使用 .isDisplayed 和 .isEnabled?
- amazon-web-services - 在 RStudio AWS AMI 上安装 RQuantLib
- java - JTabbedPane, addChangeListener() 只在最后一个选项卡上查询数据库