キーワード
- drb (11)
-
drb
/ extservm (11) -
drb
/ gw (11) -
irb
/ xmp (11) -
net
/ http (11) -
net
/ imap (11) -
net
/ pop (11) - optparse (11)
- prettyprint (11)
- rake (11)
-
rdoc
/ markup / to _ ansi (11) -
rdoc
/ markup / to _ bs (11) -
rdoc
/ markup / to _ html (11) -
rinda
/ rinda (11) - rss (11)
- shell (6)
- yaml (11)
検索結果
-
rss (199.0)
-
RSS を扱うためのライブラリです。
...設定するには以下のよう
にします。RSS::RDF::Channel.newの第一引数にはrdf:about属性の
値を指定することもできます。
rss = RSS::Parser.parse(rss_source)
rss.channel = RSS::RDF::Channel.new(rdf_about_value)
属性値を設定する場合も同様です。......配列に対して
Array#<<やArray#[]=などを用いて要素を設定します.
rss = RSS::Parser.parse(rss_source)
item = RSS::RDF::Item.new(rdf_about_value)
rss.items << item
rss.items.last == item # => true
注意: item=/set_itemなどはRubyっぽくないので使わないでく......入することでRSS/Atomにxml-stylesheetを
関連づけることができます.
rss.xml_stylesheets << RSS::XMLStyleSheet.new(...)
RSS::XMLStyleSheet.newには以下のようなHashまたは
連想配列を渡します.作成されるRSS::XMLStyleSheetオブジェ
クトは与えられ... -
optparse (133.0)
-
コマンドラインのオプションを取り扱うためのライブラリです。
...オプション -a, -b を受け付けるコマンドを作成する例です。
//emlist[sample.rb][ruby]{
require 'optparse'
opt = OptionParser.new
opt.on('-a') {|v| p v }
opt.on('-b') {|v| p v }
opt.parse!(ARGV)
p ARGV
//}
↓
ruby sample.rb -a foo bar -b baz
# => true......除かれます。
これを避けるには OptionParser#parse を使います。
//emlist[sample.rb][ruby]{
require 'optparse'
opt = OptionParser.new
opt.on('-a') {|v| p v }
opt.on('-b') {|v| p v }
# parse() の場合、ARGVは変更されない。
# オプションを取り除いた結果は ar......による条件判断を加えるには、
他のコンテナに格納します。
//emlist[sample.rb][ruby]{
require 'optparse'
opt = OptionParser.new
params = {}
opt.on('-a') {|v| params[:a] = v }
opt.on('-b') {|v| params[:b] = v }
opt.parse!(ARGV)
p ARGV
p params
//}
↓
ruby sample.r... -
net
/ http (73.0) -
汎用データ転送プロトコル HTTP を扱うライブラリです。 実装は 2616 に基きます。
...('/index.html')
}
puts res.body
//}
//emlist[例4: 上の例よりさらに汎用的な例][ruby]{
require 'net/http'
url = URI.parse('http://www.example.com/index.html')
req = Net::HTTP::Get.new(url.path)
res = Net::HTTP.start(url.host, url.port) {|http|
http.request(req)
}
puts res.body
//}
=......{'q'=>'ruby', 'max'=>'50'})
puts res.body
#例2: 認証付きで POST する
res = Net::HTTP.post_form(URI.parse('http://jack:pass@www.example.com/todo.cgi'),
{'from'=>'2005-01-01', 'to'=>'2005-03-31'})
puts res.body
#例3: より細かく制御する......url = URI.parse('http://www.example.com/todo.cgi')
req = Net::HTTP::Post.new(url.path)
req.basic_auth 'jack', 'pass'
req.set_form_data({'from'=>'2005-01-01', 'to'=>'2005-03-31'})
res = Net::HTTP.new(url.host, url.port).start {|http| http.request(req) }
case res
when Net::HTTPSuccess, Net::HTTPRedire... -
drb
/ gw (61.0) -
drb 通信を中継するゲートウェイ(DRb::GW)と、 中継に必要なオブジェクト識別子変換クラス(DRb::GWIdConv)、 および DRb::DRbObject への拡張が含まれています。
...d
def ping(obj)
puts "#{@name}: ping: #{obj.inspect}"
@peer.ping(self) if @peer
end
end
gw_b.rb
require 'drb/drb'
require 'drb/gw'
require 'drb/unix'
DRb.install_id_conv(DRb::GWIdConv.new)
front = DRb::GW.new
s1 = DRb::DRbServer.new('drbunix:/tmp/gw_b_a......', front)
s2 = DRb::DRbServer.new('drbunix:/tmp/gw_b_c', front)
s1.thread.join
s2.thread.join
gw_a.rb
require 'drb/unix'
require_relative 'foo'
obj = Foo.new('a')
DRb.start_service("drbunix:/tmp/gw_a", obj)
robj = DRbObject.new_with_uri('drbunix:/tmp/gw_b_a')
robj[:a] = o......Rb.thread.join
gw_c.rb
require 'drb/unix'
require_relative 'foo'
foo = Foo.new('c', nil)
DRb.start_service("drbunix:/tmp/gw_c", nil)
robj = DRbObject.new_with_uri("drbunix:/tmp/gw_b_c")
puts "c->b"
a = robj[:a]
sleep 2
a.ping(foo)
DRb.thread.join
これを、g... -
drb
/ extservm (55.0) -
DRb::ExtServManager を定義しているライブラリ。
...ruby service.rb service2)
# ExtServManager オブジェクトを生成して
# drb の front object に指定する
s = DRb::ExtServManager.new
DRb.start_service("druby://localhost:10234", s)
# drb のプロセスの終了を待つ
DRb.thread.join
service.rb:
require 'drb/drb'......d
def hello
"You invoke #{@service_name}"
end
end
puts "Start #{ARGV[0]}"
# ARGV の最後2つを除いた部分は ExtServManager.command で
# 指定した引数が渡される
front = Service.new(ARGV[0])
# 通信のため drb を起動する
# ポート番......DRb::DRbServer.new("druby://localhost:0", front)
# ARGV の最後の2つと DRbServer オブジェクトを ExtServ.new に渡す。
# これによってブローカープロセスにサービスの
# 窓口となる ExtServ オブジェクトを渡す
es = DRb::ExtServ.new(ARGV[1], ARGV[... -
net
/ pop (49.0) -
このライブラリは、POP3 (Post Office Protocol version 3) を 用いてPOPサーバからメールを受信する機能を提供するライブラリです。
...適宜読みかえてください。
require 'net/pop'
pop = Net::POP3.new('pop.example.com', 110)
pop.start('YourAccount', 'YourPassword') # POPのセッションを開始
if pop.mails.empty?
$stderr.puts 'no mail.'
else
pop.mails.each_with_index do |m, idx| # 各メッセー......ジにアクセスする
File.open("inbox/#{idx + 1}", 'w') {|f|
f.write m.pop
}
m.delete
end
$stderr.puts "#{pop.mails.size} mails popped."
end
pop.finish # セッションを終了する
POP サーバはネットワー......の Net::POP3.start を使うことで
POP3.new, #start, #finish を併合できます。
require 'net/pop'
Net::POP3.start('pop.example.com', 110,
'YourAccount', 'YourPassword') {|pop|
if pop.mails.empty?
$stderr.puts 'no mail.'
else
pop.mails.each_with... -
rinda
/ rinda (43.0) -
Rubyで実装されたタプルスペース(Tuple Space)を扱うためのライブラリです。
...leSpace.new)
puts DRb.uri
DRb.thread.join
# rindas.rb
require 'drb/drb'
require 'rinda/rinda'
def do_it(v)
puts "do_it(#{v})"
v + v
end
uri = ARGV.shift || raise("usage: #{$0} <server_uri>")
DRb.start_service
ts = Rinda::TupleSpaceProxy.new(DRbObject.new(nil, u......drb'
require 'rinda/rinda'
uri = ARGV.shift || raise("usage: #{$0} <server_uri>")
DRb.start_service
ts = Rinda::TupleSpaceProxy.new(DRbObject.new(nil, uri))
(1..10).each do |n|
ts.write(['sum', DRb.uri, n])
end
(1..10).each do |n|
ans = ts.take(['ans', DRb.uri, n, n... -
irb
/ xmp (37.0) -
Ruby のソースコードとその実行結果を、行ごとに交互に表示するためのライブ ラリです。irb を実行しなくても、使用することが出来ます。
...ブ
ラリです。irb を実行しなくても、使用することが出来ます。
実行結果を得るためには、Kernel#xmp と、XMP#puts を使った方
法があります。どちらの場合も XMP がコンテキスト情報を保持するため、
実行結果に差分はありま......ス(XMP#puts)を使って実行結果を得る
XMP#puts では、以下のように Ruby のソースコードを文字列として渡す
事で実行結果を標準出力に表示します。
$ cat t.rb
require "irb/xmp"
xmp = XMP.new
xmp.puts <<END
foo = 1
foo
END
xmp.puts <<END... -
drb (25.0)
-
分散オブジェクトプログラミングのためのライブラリです。
...意の Ruby のコードを実行できて
しまいます。例えば以下のようなことができます。
# !! 危険 !!
ro = DRbObject.new_with_uri("druby://your.server.com:8989")
class << ro
# リモートオブジェクトの instance_eval を呼ぶため
# ローカルオ......rent_time
return Time.now
end
end
# サーバ側でリクエストを受け付けるオブジェクト
FRONT_OBJECT=TimeServer.new
# サーバを起動する
DRb.start_service(SERVER_URI, FRONT_OBJECT, :safe_level => 1)
# DRb のスレッドが終了するのを待つ......ブジェクト以外の
# リモートオブジェクトのメソッドを呼び出す時には必要
DRb.start_service
# リモートオブジェクトの取得
timeserver = DRbObject.new_with_uri(SERVER_URI)
# リモートメソッドの呼び出し
puts timeserver.get_current_time... -
net
/ imap (25.0) -
このライブラリは Internet Message Access Protocol (IMAP) の クライアントライブラリです。2060 を元に 実装されています。
...ire 'net/imap'
imap = Net::IMAP.new('mail.example.com')
imap.authenticate('LOGIN', 'joe_user', 'joes_password')
imap.examine('INBOX')
imap.search(["RECENT"]).each do |message_id|
envelope = imap.fetch(message_id, "ENVELOPE")[0].attr["ENVELOPE"]
puts "#{envelope.from[0].name}: \t#{en......ct}"
end
2003年4月のメールをすべて Mail/sent-mail から "Mail/sent-apr03" へ移動させる
require 'net/imap'
imap = Net::IMAP.new('mail.example.com')
imap.authenticate('LOGIN', 'joe_user', 'joes_password')
imap.select('Mail/sent-mail')
if not imap.list('Mail/', 'sent-apr......punge
=== スレッド安全性
Net::IMAP は並列実行をサポートしています。例として、
require 'net/imap'
imap = Net::IMAP.new("imap.foo.net", "imap2")
imap.authenticate("cram-md5", "bar", "password")
imap.select("inbox")
fetch_thread = Thread.start { imap.fetch(1..-1...