当我尝试启动服务器时,我收到以下警告:
/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?
如何找到已定义常量的位置,以及如何覆盖该定义?
答案 0 :(得分:8)
虽然我找不到常量初始化的位置,但您可以通过将该行包装在silence_warnings块中来使警告静音。
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
答案 1 :(得分:0)
您可以在调用OpenSSL::SSL.send(:remove_const, :VERIFY_PEER)
之前先取消设置常量,然后根据需要进行设置,然后再将其恢复为原始值。这是示例代码from a 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)
来源和归因:该解决方案来自a comment by @sameers,涉及Stack Overflow。根据Stack Overflow用户贡献许可政策在CC-BY-SA 4.0下获得许可。作者的主旨被认为是其中的一部分,因为作者在Stack Overflow注释中指出了将其发布的初衷。