2011-04-23 161 views
9

我刚开始在rails上学习ruby。 我遵循了很多安装示例,但是当我运行示例时出现此错误Ruby on Rails config.secret_token错误

需要秘密来为cookie会话数据生成完整性哈希。在config/initializers/secret_token.rb中使用config.secret_token =“一些至少30个字符的秘密短语”

我搜索它,但我没有看到太多的帮助。

plz help。

平台:Mac OS X.

回答

9

你的令牌应该已经自动生成Rails的,但你仍然可以使用类似:

irb(main):007:0> "#{ActiveSupport::SecureRandom.hex(64)}" 
=> "921b00fcfabe0368d70627020f3b4c969cfd9bdc2474f4040c1ae976f687014694beb5d36dfc0c41bac8ebde96a14fceaee228d6e34d8183c5d7cc99d310d4f9" 

意义,可以产生一些随机字符串,并把它到你的config/initializers/secret_token.rb文件:

# Be sure to restart your server when you modify this file. 

Yourapp::Application.config.secret_token = '921b00fcfabe0368d70627020f3b4c969cfd9bdc2474f4040c1ae976f687014694beb5d36dfc0c41bac8ebde96a14fceaee228d6e34d8183c5d7cc99d310d4f9' 
+8

在Rails 3.2中,ActiveSupport :: SecureRandom不再有效。它现在只是SecureRandom。它看起来像这样,“#{SecureRandom.hex(64)}” – MoB 2012-08-30 18:04:02

33

生成一个新的秘密令牌,最简单的方法是运行

rake secret 

在命令行。

0

这个简单的命令为我工作:

rvmsudo rake generate_secret_token 
4

这与轨道版本可能是一个问题。当我卸载了Rails 4并安装了Rails 3时,我遇到了这个问题。在检查rails -v并确定它确实是Rails 3之后,我执行了rails myapp。出于某种原因,配置文件config/initializers/secret_token.rb中定义了“config.secret_key_base”变量,这似乎是Rails 4的做法。我可以通过将其更改为“config.secret_token”来修复它,我相信这是Rails 3使用的。

+1

谢谢!我也碰到过这个。 – tol4trob 2014-07-18 18:16:17

0

确保你有这样的在你的environment.rb:

YourApp::Application.initialize! 
0

就遇到了这个同样的问题,找到了我的配置/初始化/ secret_token.rb文件正被蠢货,我的.gitignore文件忽略。检查你的git源位置中的config/initializers目录,并确保secret_token.rb文件存在。如果它不编辑.gitignore文件,以便git不会忽略secret_token.rb文件并提交更改(通常隐藏 - 我使用这些简单命令在mac上显示隐藏文件http://osxdaily.com/2009/02/25/show-hidden-files-in-os-x/)。