弃用警告:您没有设置config.secret_key_base

时间:2014-03-08 11:26:31

标签: ruby-on-rails ruby-on-rails-4

运行我的规格时收到此警告。是否有生成secret_key_base的最佳实践,或者任何字符串是否足够(关于安全性问题)?

5 个答案:

答案 0 :(得分:96)

您可以从3.x或以前的版本升级到Rails 4。

首先生成随机密钥值:

$ bundle exec rake secret

然后取出该值并将其放入config/initializers/secret_token.rb

YourApp::Application.config.secret_key_base = 'your-secret'

YourApp替换为您的应用程序名称。

原因解释here

另见http://guides.rubyonrails.org/upgrading_ruby_on_rails.html#config-secrets-yml

答案 1 :(得分:6)

从4.1开始,您需要使用config/secrets.yml文件。这在http://guides.rubyonrails.org/upgrading_ruby_on_rails.html#config-secrets-yml中进行了讨论。

答案 2 :(得分:4)

您只需在config / initializers目录中创建一个secret_token.rb文件。

以下文件的内容:

YourAppNameHere::Application.config.secret_key_base = #type the key you generated with rake secret here

然后保存文件

close your server: 
ctrl c

restart it: rails s

您现在可以看到您在上一章中看到的基本rails应用页面(如果您正在使用Hartl的教程)

答案 3 :(得分:2)

如果你像我这样的总菜鸟,请记得把秘密_key_base ='无论如何'单引号内。只是没有引号的复制和粘贴会引发错误:

C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/activesupport-4.0.8/lib/act ive_support / dependencies.rb:223:在`load':C:/ Users / Jeff C / documents / rails_proje cts / first_app / config / initializers / secret_token.rb:1:语法错误,意外的tI DENTIFIER,期待$ end(SyntaxError)

答案 4 :(得分:0)

在处理升级到 Rails 5Rails 4 应用程序时遇到同样的问题。

我所要做的就是运行下面的命令来生成一个 secret key

bundle exec rake secret

然后我将密钥添加到 config/secret.yml 文件中:

development:
  secret_key_base: 21bc6137d0496a2a11f4459a7c7deb4f782d223d41ee328934b2fe7a405a42ec63eb3829db67f0ec6a759e134ba0bb15dc2d01168b64d83efcf8d42b403ac8bd

仅此而已。

我希望这会有所帮助