10

当我尝试启动服务器时,我收到以下警告:

/Users/sumitkalra1984/MVP/config/initializers/devise.rb:5: warning: already initialized constant VERIFY_PEER   

我的设计文件:

OpenSSL::SSL::VERIFY_PEER = OpenSSL::SSL::VERIFY_NONE if Rails.env.development?  

如何找到已定义常量的位置,以及如何覆盖该定义?

4

2 回答 2

10

虽然我找不到常量初始化的其他位置,但您可以通过将该行包装在静音警告块中来使警告静音。

silence_warnings do
  OpenSSL::SSL::VERIFY_PEER = OpenSSL::SSL::VERIFY_NONE unless Rails.env.production?
end

请参阅:http ://api.rubyonrails.org/classes/Kernel.html#method-i-silence_warnings

于 2014-01-23T17:20:58.633 回答
0

您可以调用OpenSSL::SSL.send(:remove_const, :VERIFY_PEER)before 来取消设置常量,根据需要设置它,然后将其恢复为原始值。这是来自 gist的示例代码:

prev_setting = OpenSSL::SSL.send(:remove_const, :VERIFY_PEER)
OpenSSL::SSL.const_set(:VERIFY_PEER, OpenSSL::SSL::VERIFY_NONE)

# HTTP requests with DISABLED certificate verification go here.

OpenSSL::SSL.send(:remove_const, :VERIFY_PEER)
OpenSSL::SSL.const_set(:VERIFY_PEER, prev_setting)

 

来源和归属:解决方案来自@sameers在 Stack Overflow 上的评论。根据 Stack Overflow 用户贡献许可政策,在 CC-BY-SA 4.0 下获得许可。要点被认为是其中的一部分,因为作者在 Stack Overflow 评论中表明了他们发布它的初衷。

于 2020-03-30T20:31:13.500 回答