2011-04-23 158 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/)。