open-uri.rb

http/ftp �˴�ñ�˥����������뤿��Υ��饹�Ǥ��� Kernel �Υ⥸�塼��ؿ�(�Ȥ߹��ߴؿ�) open ���������ޤ���

������

http/ftp �� URL �����̤Υե�����Τ褦�˳����ޤ���

require 'open-uri'
open("http://www.ruby-lang.org/") {|f|
  f.each_line {|line| p line}
}

�������ե����륪�֥������Ȥ� StringIO �⤷���� Tempfile �Ǥ��� OpenURI::Meta �dz�ĥ����Ƥ��ơ� �᥿������������᥽�åɤ��Ȥ��ޤ���

open("http://www.ruby-lang.org/en") {|f|
  f.each_line {|line| p line}
  p f.base_uri         # <URI::HTTP:0x40e6ef2 URL:http://www.ruby-lang.org/en/>
  p f.content_type     # "text/html"
  p f.charset          # "iso-8859-1"
  p f.content_encoding # []
  p f.last_modified    # Thu Dec 05 02:45:02 UTC 2002
}

�ϥå�������ǡ��ɲäΥإå��ե�����ɤ����Ǥ��ޤ���

open("http://www.ruby-lang.org/en/",
  "User-Agent" => "Ruby/#{RUBY_VERSION}",
  "From" => "foo@bar.invalid",
  "Referer" => "http://www.ruby-lang.org/") {|f|
  ...
}

http_proxy �� ftp_proxy �ʤɤδĶ��ѿ��ϡ��ǥե���Ȥ�ͭ���ˤʤäƤ��ޤ��� �ץ�������̵���ˤ���ˤ� :proxy => nil �Ȥ��ޤ���

open("http://www.ruby-lang.org/en/raa.html",
  :proxy => nil) {|f|
  ...
}

URI ���֥������Ȥ�����褦����ˡ�dz����ޤ���

uri = URI.parse("http://www.ruby-lang.org/en/")
uri.open {|f|
  ...
}

URI ���֥������Ȥ�ľ���ɤ߹��ळ�Ȥ��Ǥ��ޤ��� ����ͤ�ʸ����ϡ�OpenURI::Meta �dz�ĥ����Ƥ��ޤ���

str = uri.read
p str.base_uri

Kernel �⥸�塼��

�⥸�塼��ؿ�

Kernel.open(name, *rest)
Kernel.open(name, *rest){|ouri| ...}

'open-uri' �� require ����ȡ�Kernel.open �����������ޤ���

name �� http:// �� ftp:// �ǻϤޤäƤ���ʸ����ʤ� URI �Υ꥽������ ����������� StringIO ���֥������ȤȤ����֤��ޤ������� StringIO ���֥������Ȥ� OpenURI::Meta �dz�ĥ����Ƥ��ޤ��� *rest �Ǽ����դ��륪�ץ����˴ؤ��Ƥϡ� OpenURI.open_uri �򻲾Ȥ��Ʋ�������

name �� open �᥽�åɤ��������Ƥ�����ϡ�*rest ������Ȥ����Ϥ� name.open(*rest, &block) �Τ褦�� name �� open �᥽�åɤ��ƤФ�ޤ��� ����ʳ��ξ��ϡ�name �ϥե�����̾�Ȥ��ư���졢����� Kernel#open ���ƤФ�ޤ���

require 'open-uri'
sio = open('http://www.example.com')
p sio.is_a?(OpenURI::Meta) # => true
p sio.content_type 
puts sio.read

�֥��å���Ϳ�������Ͼ�ξ���Ʊ�͡�name �� http:// �� ftp:// �� �ϤޤäƤ���ʸ����ʤ� URI �Υ꥽���������������� StringIO ���֥������Ȥ� �����Ȥ��ƥ֥��å���ɾ�����ޤ������Ʊ�ͤǤ���

URI::HTTP

OpenURI::OpenRead �򥤥󥯥롼�ɤ��ޤ���

URI::FTP

OpenURI::OpenRead �򥤥󥯥롼�ɤ��ޤ���

OpenURI �⥸�塼��

�⥸�塼��ؿ�

OpenURI.open_uri(name [, mode [, perm]] [, options])
OpenURI.open_uri(name [, mode [, perm]] [, options]){|sio| ... }

URI �Ǥ���ʸ���� name �Υ꥽������������� StringIO ���֥������� �Ȥ����֤��ޤ��� Ϳ����줿 mode ���񤭹��ߥ⡼�ɤǤ��ä����ϡ��㳰 ArgumentError ���ꤲ�ޤ��� perm ��Ϳ���Ƥ�̵�뤵��ޤ���

require 'open-uri'
sio = OpenURI.open_uri('http://www.example.com')
puts sio.read

OpenURI.open_uri('http://www.example.com'){|sio| sio.read }

�֥��å���Ϳ�������� StringIO ���֥������Ȥ�����Ȥ��ƥ֥��å��� ɾ�����ޤ���

options �ˤ� Hash ��Ϳ���ޤ�����᤹��ϥå���� ������ :proxy, :progress_proc, :content_length_proc �Ǥ���HTTP �ǤΤ߰�̣������ޤ���

���� :proxy ���ͤˤϰʲ��Τ����줫��Ϳ���롣

  • ʸ���� => "http://proxy.foo.com:8000/" �Τ褦�ʥץ������� URI��
  • URI ���֥������� => URI.parse("http://proxy.foo.com:8000/") �Τ褦�� �ץ������� URI ���֥������ȡ�
  • true => Proxy ��Ķ��ѿ��ʤɤ��鸫�Ĥ��褦�Ȥ��롣
  • false => Proxy ���Ѥ��ʤ���
  • nil => Proxy ���Ѥ��ʤ���

    require 'open-uri'
    sio = OpenURI.open_uri('http://www.example.com',
                           { :proxy => 'http://proxy.example.com:8000/' })
    

���� :content_length_proc ���ͤˤϥ֥��å���Ϳ���ޤ����֥��å����оݤȤʤ� URI �� Content-Length ������Ȥ��Ƽºݤ�ž�����Ϥޤ�����ɾ������ޤ����֤��ͤ��ä� ���Ѥ���ޤ���

���� :progress_proc ���ͤˤϥ֥��å���Ϳ���ޤ����֥��å����оݤȤʤ� URI ����ǡ����� ���Ҥ�ž������뤿�Ӥˡ��������ҤΥ�����������Ȥ���ɾ������ޤ����֤��ͤ��ä� ���Ѥ���ޤ���

���2�� :content_length_proc �� :progress_proc �ϥץ����쥹�С��Τ���� ���Ѥ���뤳�Ȥ����ꤷ�Ƥ��ޤ���

���

Options

Hash ���֥������ȡ�open_uri ����᤹�륪�ץ����Υǥե���ȤǤ���

OpenURI::OpenRead �⥸�塼��

�᥽�å�

open(*rest, &block)

OpenURI.open_uri(self, *rest, &block) ��Ʊ���Ǥ���

read(options={})

self.open(options={}).read ��Ʊ���Ǥ��� ���Υ᥽�åɤˤ�ä��֤����ʸ����� OpenURI::Meta �ˤ�äƳ�ĥ����Ƥ��ޤ���

require 'open-uri'
uri = URI.parse('http://www.example.com/')
str = uri.read
p str.is_a?(OpenURI::Meta) # => true
p str.content_type 

OpenURI::Meta �⥸�塼��