【问题标题】:warning: already initialized constant VERIFY_PEER警告:已初始化常量 VERIFY_PEER
【发布时间】:2013-09-24 07:32:22
【问题描述】:

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

/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?  

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

【问题讨论】:

  • 发布您的设计文件的全部内容,同时检查配置文件夹中的环境和应用程序文件。
  • 感谢编辑@toro2k...
  • nd @matt ok 我正在发布我的 device.rb 文件的全部内容以及课程环境和应用程序文件的内容。
  • 仍然对这个问题感到好奇。你找到答案了吗?
  • @robyoder 抱歉,我还找不到答案...:(

标签: ruby-on-rails devise


【解决方案1】:

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

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

【讨论】:

  • 注意:我还将行尾更改为“除非 Rails.env.production?”因为我在运行测试时也收到了警告。
【解决方案2】:

您可以在之前调用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)

 

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-07-04
    • 2011-01-02
    • 2011-08-29
    • 2011-11-29
    • 2014-07-25
    • 1970-01-01
    • 2012-10-08
    • 1970-01-01
    相关资源
    最近更新 更多