B.I*_*.I. 5 ruby-on-rails configuration-files ruby-on-rails-4
我正在阅读http://edgeguides.rubyonrails.org/upgrading_ruby_on_rails.html
并看到了诀窍config/secrets.yml
我将secret_base_keys移动到该文件,并删除了secret_token.rb文件.
但服务器无法启动.
DEPRECATION WARNING: You didn't set config.secret_key_base. Read the upgrade documentation to learn more about this new config option. (called from service at /home/bismailov/.rvm/rubies/ruby-1.9.3-p429/lib/ruby/1.9.1/webrick/httpserver.rb:138)
[2014-01-15 16:15:51] ERROR RuntimeError: You must set config.secret_key_base in your app's config.
Run Code Online (Sandbox Code Playgroud)
我相信那是因为我还没有使用Rails 4.1.
有没有办法在Rails 4.0版中实现这个新功能(secrets.yml)?也许某种宝石......
非常感谢你!
sca*_*er2 20
此secret_key_base弃用似乎没有替代语法来删除Rails 4.0应用程序中的弃用警告.要满足弃用,请按照将生产密钥移至secrets.yml和删除secret_token.rb文件的步骤进行操作.在您的实现中使用YAML加载器application.rb从secrets.yml文件中提取令牌.
使用rake secret生成每个您的环境中新的令牌.将输出复制并粘贴到secrets.yml文件的每个部分.
# config/secrets.yml
development:
secret_key_base: __pasted from rake secret___
test:
secret_key_base: __pasted from rake secret___
production:
secret_key_base: __pasted token from config/initializers/secret_token.rb___
# config/application.rb
# TODO Remove this in Rails 4.1
config.secret_key_base = YAML.load(File.open("#{Rails.root}/config/secrets.yml"))[Rails.env]['secret_key_base']
Run Code Online (Sandbox Code Playgroud)
引用:https://github.com/rails/rails/pull/13298
更新:
我的原创帖子专注于@ user2998870的灵感,我为我添加了一个方法,application.rb即允许一个人实现多个秘密,而不仅仅是secret_key_base.这使得顶级密钥可以作为方法访问,例如Rails.application.secrets.braintree_merchant_id.
如果嵌套,可以使用调用嵌套键值Rails.application.secrets.braintree['merchant_key'].
注意:仍然需要上面的原始代码secret_key_base才能在Rails 4.0中正常运行.
# config/application.rb
def secrets
@secrets ||= begin
yaml = YAML.load(File.open("#{Rails.root}/config/secrets.yml"))[Rails.env]
ActiveSupport::OrderedOptions.new.merge!(yaml.symbolize_keys)
end
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
16769 次 |
| 最近记录: |