Ruby on rails RubyMine Rails 5 Savon net_http Errno::ECONNRESET SSL_Connect

Ruby on rails RubyMine Rails 5 Savon net_http Errno::ECONNRESET SSL_Connect,ruby-on-rails,ssl,rubymine,savon,Ruby On Rails,Ssl,Rubymine,Savon,我想我已经阅读了所有与这个主题相关的主题,但仍然没有解决方案。 我正在使用: 鲁比明2017.2.4 Ruby 2.4.1 Rails 5.1.0 萨文 当我在rails控制台中使用Savon连接到服务器时,出现以下错误: Errno::ECONNRESET:已存在的连接被 远程主机SSL\u连接 这是我使用的代码: wsdlUrl = 'https://some.server.com/ws/schema/Echo.wsdl' licenseKey = '1234567890' clien

我想我已经阅读了所有与这个主题相关的主题,但仍然没有解决方案。 我正在使用:

  • 鲁比明2017.2.4
  • Ruby 2.4.1
  • Rails 5.1.0
  • 萨文
当我在rails控制台中使用Savon连接到服务器时,出现以下错误:

Errno::ECONNRESET:已存在的连接被 远程主机SSL\u连接

这是我使用的代码:

wsdlUrl = 'https://some.server.com/ws/schema/Echo.wsdl'
licenseKey = '1234567890'

client = Savon.client(wsdl: wsdlUrl,
                  log:true,
                  ssl_verify_mode: :none)

response = client.call(:echo, 
                        message: { licenseKey: licenseKey,
                                   value: 'Hello World'})

puts "\nResult \"#{response.body[:echo_response][:value]}\" was returned"
我已尝试以下方法:

  • 下载ca-bundle.crt并添加到我的系统环境中(然后重新启动
    (一切)
  • 更新了我的宝石
  • 重新安装Ruby、Rails和RubyMine
  • 创建了一个新的应用程序并复制了代码
  • 在代码中添加了“需要openssl”
  • 添加了以下代码:

    require 'open-uri'
    require 'net/https'
    module Net
      class HTTP
        alias_method :original_use_ssl=, :use_ssl=
        def use_ssl=(flag)
           path = ( Rails.env == "development") ? "lib/ca-bundle.crt" : "/usr/lib/ssl/certs/ca-certificates.crt"
           self.ca_file = Rails.root.join(path).to_s
           self.verify_mode = OpenSSL::SSL::VERIFY_PEER
           self.original_use_ssl = flag
         end
       end
     end
    
只是什么都没用了

奇怪的是:

当我运行rails(development)控制台并输入上面的代码时,就会出现ssl_connect错误。当我在RubyMine中更改一些代码,并且不重新启动控制台时,我不会得到任何错误。当我重新运行Rails控制台时,再次出现ssl连接错误

有人知道我可以去哪里吗

编辑1:
我发现,如果我将上述代码放在一个文档(echo.rb)中,当我在终端中调用该文档为:ruby echo.rb时,它将对所有有相同问题的用户起作用:

首先

然后将其添加到代码中:

 require 'http'

它是通过脚本工作的吗?当我从终端调用脚本时,它确实工作。我将代码放在一个文档echo.rb中。当我运行ruby echo.rb时,它会工作……很抱歉,Rails帮不了我。
openssl s_客户端-connect some.server.com:443-servername so.server.com
return
gethostbyname failure
。如果你需要帮助,也许你应该提供准确的信息。或者,如果您不能提供信息,请询问您的团队成员。因为堆栈溢出对您隐藏了接近的原因:此问题是由无法再复制的问题或简单的印刷错误引起的。虽然类似的问题可能在这里的主题,这是一个解决的方式不太可能帮助未来的读者。这通常可以通过在发布前确定并仔细检查重现问题所需的最短程序来避免。
 require 'http'