【发布时间】:2018-12-06 01:51:56
【问题描述】:
我已经使用 5.2 版本创建了新的 Rails 应用程序。 Rails 5.2 引入了机密的加密功能。
我已经在 devise.rb 文件中配置了密钥
config.secret_key = Rails.application.credentials[Rails.env.to_sym][:secret_key_base]
还使用
为所有环境添加了secret_keyEDITOR=vim rails credentials:edit
development:
secret_key_base: absdss
test:
secret_key_base: 123232
production:
secret_key_base: 123456
保存凭据后,我可以在本地的 rails 控制台中获取 secret_key
rails 控制台中的输出:
Running via Spring preloader in process 44308
Loading development environment (Rails 5.2.0)
2.5.1 :001 > Rails.application.credentials.development[:secret_key_base]
=> "absdss"
凭证在生产服务器上不起作用,我们在 gitlab 中使用 CI/CD 进行部署阶段,当我运行
rails db:create db:migrate
我收到以下错误
> rails db:create db:migrate
---> Running in 1563453ddf2a
rails aborted!
NoMethodError: undefined method `[]' for nil:NilClass
/usr/src/app/config/initializers/devise.rb:12:in `block in <main>'
/usr/local/bundle/gems/devise-4.4.3/lib/devise.rb:307:in `setup'
/usr/src/app/config/initializers/devise.rb:5:in `<main>'
/usr/local/bundle/gems/bootsnap-1.3.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:50:in `load'
现在的问题是如何将 RAILS_MASTER_KEY 设置为生产服务器?
【问题讨论】:
标签: ruby-on-rails ruby gitlab-ci ruby-on-rails-5.1 ruby-on-rails-5.2