При открытии локального файла в браузере, URL в адресной строке отображается:
file:///Users/7stud/Desktop/accounts.txt
Но это не означает, что вы используете этот формат в сценарии Ruby. Ваш скрипт Ruby не отправляет имя файла в браузер, а затем запрашивает браузер для получения файла. Ваш скрипт Ruby напрямую ищет вашу файловую систему.
То же самое верно для URL-адресов: ваш скрипт Ruby не запрашивает у вашего браузера доступ к странице из Интернета, Ruby извлекает саму страницу, отправив запрос с использованием сетевого интерфейса вашей системы. В конце концов, браузер и рубиновая программа - это просто компьютерные программы. То, что ваш браузер может делать по сети, также может сделать программа Ruby.
Это работает для меня:
require 'open-uri'
text = open('./data.txt').read
puts text
Вы должны получить правильный путь, однако. Единственная причина, по которой я могу думать о том, чтобы использовать open()
, - это если у вас есть массив имен файлов и URL-адресов, смешанных друг с другом. Если это не ваша ситуация, см. Ответ new2code.
Невозможно. Весь ваш код требует «open-uri», а затем присваивает строку переменной. – 7stud
Зачем использовать OpenURI для открытия файла, когда вы можете использовать 'open' самостоятельно? –