我是 Rails 新手,并遵循 Michael hartl 的 Ruby on Rails 教程。
遵循清单 7.11,在测试环境中重新定义 BCrypt 成本因子:
#config/environments/test.rb
SampleApp::Application.configure do
.
.
.
# Speed up tests by lowering BCrypt's cost function.
require 'bcrypt'
silence_warnings do
BCrypt::Engine::DEFAULT_COST = BCrypt::Engine::MIN_COST
end
end
每次运行 Rspec 时都会收到以下警告:
/Users/stonefruit/.rvm/gems/ruby-1.9.3-p385/gems/bcrypt-ruby-3.0.1/lib/bcrypt.rb:28: warning: already initialized constant DEFAULT_COST
/Users/stonefruit/.rvm/gems/ruby-1.9.3-p385/gems/bcrypt-ruby-3.0.1/lib/bcrypt.rb:30: warning: already initialized constant MIN_COST
/Users/stonefruit/.rvm/gems/ruby-1.9.3-p385/gems/bcrypt-ruby-3.0.1/lib/bcrypt.rb:32: warning: already initialized constant MAX_SALT_LENGTH
我可以知道这些警告是否重要?另外,“silence_warnings”是否应该对警告做任何事情?
谢谢!
编辑:我提供的清单中有一个错字。将 require 'bcrypt' 移出注释行。
编辑答案:
在编辑帖子时,我发现我没有完全按照列表进行操作。在我的代码中,我使用过
require 'BCrypt'
代替
require 'bcrypt'
将其更改为全小写后,警告消失了!