로컬 파일 또는 URL에서 IO 스트림 열기


104

다른 언어로 된 라이브러리가 로컬 파일 또는 URL에 대한 경로를 포함하는 문자열을 가져와 읽을 수있는 IO 스트림으로 열 수 있다는 것을 알고 있습니다.

루비에서 쉽게 할 수있는 방법이 있습니까?

답변:


224

open-uri 는 표준 Ruby 라이브러리의 일부이며 openurl과 로컬 파일을 열 수 있도록 의 동작을 재정의 합니다. 그것은 반환 File당신이 좋아하는 메소드를 호출 할 수 있어야하므로, 개체를 read하고 readlines.

require 'open-uri'
file_contents = open('local-file.txt') { |f| f.read }
web_contents  = open('http://www.stackoverflow.com') {|f| f.read }

2
ActionMailer 첨부 파일에서 여기에서 한 것처럼 파일 객체를 반환하는 방법이 있습니까?
AnApprentice 2010

9
지금은 조금 오래되었지만 다음과 같이 할 수도 있습니다.content = open("http://example.com").read
Automatico

6
할 수 있지만 클로저 외부에서 수행하면 파일 설명자가 열린 상태로 유지됩니다. 이것은 일부 사용에 문제가 될 수 있습니다.
아론 Hinni

19
참고 open-uri하지 않을 것이다 스트림 당신은 그것의 첫번째 4K를 읽을 수 있도록 파일을. 여는 순간 전체 파일을 메모리로 open-uri읽습니다 .
zed_0xff

3
URI.parse('http://www.stackoverflow.com').open { |f| f.read }보험 방법을 찾으면 전화하지 않습니다 Kernal.open. 또한 rubocop 보안 규칙을 우회합니다.
newdark-it
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.