Ruby和Homebrew错误"拒绝链接:openssl"

时间:2016-08-08 21:06:14

标签: ruby-on-rails ruby openssl homebrew rails-geocoder

我目前遇到了一些严重的问题,包括ruby,谷歌地理编码api和openssl。我正在运行Mac OS X 10.11.3,rvm 1.27.0和ruby 2.2.2。 openssl版本就是问题所在。

当我尝试使用我的api密钥访问Google的地理编码服务时出现问题,这需要ssl。无论我使用的是result = Geocoder.search("Some Address, USA"),还是更典型的HTTParty.get("https://maps.googleapis.com/maps/api/geocode/json?address=Some+Address+US&key=MyApiKey)",我仍然会收到错误消息。

错误是 /Users/me/.rvm/rubies/ruby-2.2.2/lib/ruby/2.2.0/net/http.rb:923:in 'connect': SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed (OpenSSL::SSL::SSLError),以及Geocoder.search()函数的回溯。

我发现很多人都遇到了ruby的openssl问题,所以我检查了openssl version并返回OpenSSL 0.9.8zg 14 July 2015。我按照这篇文章的建议(http://railsapps.github.io/openssl-certificate-verify-failed.html)并运行rvm osx-ssl-certs update all,以及用自制软件重新安装openssl,但即便如此,我的终端也说openssl已经是最新的。在这一点上,很明显我有两个openssl安装,/usr/bin/中的旧安装0.98和另一个安装自制安装的安装。我最后一次尝试修复此问题是运行brew link openssl --force,但我收到此错误:

Warning: Refusing to link: openssl 
Linking keg-only openssl means you may end up linking against the insecure,
deprecated system OpenSSL while using the headers from Homebrew's openssl.
Instead, pass the full include/library paths to your compiler e.g.:
  -I/usr/local/opt/openssl/include -L/usr/local/opt/openssl/lib

如何将ruby编译器与自制软件的ssl版本链接?我是否必须在每个终端会话中手动执行此操作?

我编写的脚本的简单版本就是这个

require 'geocoder'
require 'HTTParty'

Geocoder.configure(
  :google => {
    :api_key => "AIzaSyAG_TrgufZrrNTiwwBu2NP_xCXy3OGsH7M"
  })

address = "350 5th Ave, New York, NY"

result = Geocoder.search(address)
print result

0 个答案:

没有答案