RubyMine Rails 5 Savon net_http Errno :: ECONNRESET SSL_Connect

时间:2017-10-17 18:58:21

标签: ruby-on-rails ssl rubymine savon

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

  • RubyMine 2017.2.4
  • Ruby 2.4.1
  • Rails 5.1.0
  • 萨翁

当我将我的rails控制台与Savon连接到服务器时,出现以下错误:

Errno :: ECONNRESET:现有连接被强制关闭 远程主机。 - SSL_connect

这是我使用的代码:

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(开发)控制台时,我输入上面的代码,我得到了ssl_connect错误。当我在RubyMine中更改一些代码,并且DON重新启动控制台时,我不会收到任何错误。当我重新运行Rails控制台时,我再次收到ssl-connect错误。

有谁知道我在哪里看

编辑1: 我发现如果我把上面的代码放在一个文件(echo.rb)中,当我在终端中调用文件时它将起作用:ruby echo.rb

1 个答案:

答案 0 :(得分:0)

对于所有遇到同样问题的人:

第一

 $ gem install 'http' (or add gem 'http' to your Gemfile and install)

然后在您的代码中添加:

 require 'http'