我有一个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请求,有什么想法可以改变。
答案 0 :(得分:1)
这看起来您的应用配置与您的应用正在使用的SSL版本不同。您可能需要确保open-uri
正在发送正确版本的SSL握手,可能是TLSv1
。
我个人并不知道如何使用open-uri
,但也许您可以使用RestClient
。