Ruby应用程序在heroku.com上的https请求中失败

时间:2015-06-08 14:37:14

标签: ruby-on-rails ruby heroku

我有一个rails应用程序已经在heroku上运行了两年,现在没有问题。我在rake文件中有以下ruby代码。

require 'open-uri'
require 'json'

namespace :myapp do
    task :load_remote_data, [:user_id] => :environment do |t, args|
        events_url = "https://myapp.com/events"
        #returns json
        puts "Event url #{events_url}"
        #this gets printed ok
        result = JSON.parse(open(events_url).read)
        #open fails
        puts "Server result #{result}"
end

来自Heroku控制台的错误消息:

rake aborted!
SSL_connect SYSCALL returned=5 errno=0 state=SSLv2/v3 read server hello A
/app/lib/tasks/load_remote_data.rake:13:in `block (2 levels) in <top (required)>'

似乎是HTTPS请求的某种问题。 这是我在Heroku上运行的Ruby版本

heroku run ruby --version
Running `ruby --version` attached to terminal... up, run.2192
ruby 1.9.2p330 (2014-08-07 revision 47094) [x86_64-linux]

为了能够再次发出HTTPS请求,有什么想法可以改变。

1 个答案:

答案 0 :(得分:1)

这看起来您的应用配置与您的应用正在使用的SSL版本不同。您可能需要确保open-uri正在发送正确版本的SSL握手,可能是TLSv1

我个人并不知道如何使用open-uri,但也许您可以使用RestClient