2015-09-09 4 views
0

У меня есть следующий метод:чтение JSON файл в мерзавце репо без проверки

def getEndpointContent(url) 
     return JSON.parse(open(url).read) 
end 

Я хочу использовать это, чтобы вернуть содержимое файла JSON, расположенный в мерзавце репо without проверки из хранилища.

Однако, если я прохожу, например, https://github.com/MyRep/myFile.json для параметра url, я получаю следующее сообщение об ошибке:

`connect': SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed (OpenSSL::SSL::SSLError) 

Это то, что я пытаюсь сделать это возможно, и если да, то как?

ответ

2

Вы не сможете получить доступ к файлу, используя этот URL.

GitHub обеспечивает доступ к необработанному файлу с использованием другого домена, и вы не указали имя пользователя или организации. Также помните, что репозиторий Git - это не просто каталог; вам также нужно указать имя ветки или передать хеш или что-то подобное, чтобы сообщить GitHub, какую версию файла вы хотите видеть.

Что-то, как это должно работать:

https://raw.githubusercontent.com/MyUser/MyRepo/master/myFile.json 

Вы можете найти необработанную ссылку на файл, перейдя по ссылке на него в GitHub UI и нажав «Raw» ссылку в заголовке файла.

0

Ruby не доверяет SSL-сертификату Github, вероятно, потому, что он слишком новый для вашей версии Ruby и/или вашей ОС.

Попробуйте следующее из командной строки (предполагается, что Linux/OSX):

wget http://curl.haxx.se/ca/cacert.pem 

Теперь в вашем коде Ruby:

ENV['SSL_CERT_FILE'] = "/path/to/your/download/cacert.pem" # where you downloaded file to 
require 'open-uri' # ensure this is after the above line. 

def getEndpointContent(url) 
    return JSON.parse(open(url).read) 
end 
+0

hm, я все еще получаю такую ​​же ошибку. Есть ли какой-то метод, который мне нужен, чтобы прочитать файл в этой строке: ENV ['SSL_CERT_FILE'] = /path/to/your/download/cacert.pem? – FionaCat86

+0

Я забыл поставить его в кавычки. Также убедитесь, что путь правильный! –

Смежные вопросы