From: Hideto ISHIBASHI Date: 2000-09-05T22:10:12+09:00 Subject: [ruby-list:24790] Re: yaiba (blade clone) 0.0.1 --------------Boundary_S-X=nmVNbv+JR Content-Type: text/plain; charset=ISO-2022-JP Content-Transfer-Encoding: 7bit 石橋秀仁です。こんにちは。自己レスです。 yaibaに入っているdoracle.rbは、Webアプリケーションサーバでいうところの 「DBコネクションプーリング機能」をdRubyサービスとして提供しています。 つまり、リモートホスト上でクエリを発行したり、その結果をRubyのArrayなどの オブジェクトとして返したりできます。 コネクションプーリングの部分は他のソフトでも役に立ちそうなので、 抜き出して添付します。少し書き換えるといろいろと使えると思います。 添付サンプルの使い方: at foo.hoge.jp $ ruby doracle.rb druby://foo.hoge.jp:17640 at bar.hoge.jp $ ruby clnt.rb druby://foo.hoge.jp:17640 ["00-09-05"] 注意)doracle.rbのDB接続が完了する前にclnt.rbを実行すると、 まだfoo.hoge.jpでdRubyサービスが立ち上がっていないので、 connection refusedになったりします。 カスタマイズの仕方: ご使用の際は、Doracle#studentsのようなメソッドを、 アプリケーションに応じて追加することになります。 そのメソッドはクライアント側で、 dqueue = DRbObject.new(nil, there) doracle = dqueue.pop result = doracle.students # => Array or something のように呼び出します。 yaibaでは、このWebアプリケーションサーバを、eRubyスクリプトから 呼び出しています。つまり、ネットワーク透過なので、将来的には Gnutella方式みたいな分散DBにもしてみたいと思ってます :-) Hideto ISHIBASHI wrote: > yaiba (blade clone) のソースを公開します。 > http://www.rr.iij4u.or.jp/~hideto-i/rb/archive/yaiba-0.0.1.tar.gz > 基本的にRDBMSと心中することになりました。Oracleで動いてます。 > PostgreSQLでも動かしたいです。PStore版も、たぶん動くと思いますけど。 -- 石橋秀仁 hideto-i@rr.iij4u.or.jp http://www.rr.iij4u.or.jp/~hideto-i/index.html --------------Boundary_S-X=nmVNbv+JR Content-Type: application/octet-stream; name="doracle.rb" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="doracle.rb" IyBDb3B5cmlnaHQgKGMpIDIwMDAgSGlkZXRvICJydWJ5aG9saWMiIElTSElCQVNISS4gQWxs IFJpZ2h0cyBSZXNlcnZlZC4KCnJlcXVpcmUgJ3RocmVhZCcKcmVxdWlyZSAnc2luZ2xldG9u JwpyZXF1aXJlICdvcmFjbGUnCnJlcXVpcmUgJ2RyYi9kcmInCnJlcXVpcmUgJ2RyYnJlZmlk JwoKCmNsYXNzIERvcmFjbGVRdWV1ZQogIGluY2x1ZGUgRFJiVW5kdW1wZWQKICBpbmNsdWRl IFNpbmdsZXRvbgoKICBkZWYgaW5pdGlhbGl6ZQogICAgQGNvbmYgPSBDb25maWcuaW5zdGFu Y2UKICAgIEB1c2VyID0gQGNvbmZbJ2RvcmFjbGUnXVsndXNlciddCiAgICBAcGFzc3dkID0g QGNvbmZbJ2RvcmFjbGUnXVsncGFzc3dkJ10KICAgIEBzZXJ2aWNlID0gQGNvbmZbJ2RvcmFj bGUnXVsnc2VydmljZSddCiAgICBAbWluc3ZyID0gQGNvbmZbJ2RvcmFjbGUnXVsnbWluaW11 bSBzZXJ2ZXJzJ10KICAgIEB3YWl0ID0gQGNvbmZbJ2RvcmFjbGUnXVsnd2FpdCddCiAgICBA cXVlID0gUXVldWUubmV3CiAgICBAbWluc3ZyLnRpbWVzIGRvIEBxdWUucHVzaChuZXdfY29u bmVjdGlvbikgZW5kCiAgICBUaHJlYWQuc3RhcnQgeyB3YXRjaF9sb29wIH0KICBlbmQKCiAg ZGVmIHBvcAogICAgQHF1ZS5wb3AKICBlbmQKCiBwcml2YXRlCiAgZGVmIHdhdGNoX2xvb3AK ICAgIGxvb3AgZG8KICAgICAgQHF1ZS5wdXNoKG5ld19jb25uZWN0aW9uKSB1bnRpbCBAcXVl Lmxlbmd0aCA9PSBAbWluc3ZyCiAgICAgIHNsZWVwIEB3YWl0CiAgICBlbmQKICBlbmQKCiAg ZGVmIG5ld19jb25uZWN0aW9uCiAgICBEb3JhY2xlLm5ldyhAdXNlciwgQHBhc3N3ZCwgQHNl cnZpY2UpCiAgZW5kCmVuZAoKCgpjbGFzcyBEb3JhY2xlCiAgaW5jbHVkZSBEUmJVbmR1bXBl ZAoKICBkZWYgaW5pdGlhbGl6ZSh1c2VyLCBwYXNzd2QsIHNlcnZpY2UpCiAgICBAY29ubiA9 IDo6T3JhY2xlLm5ldyh1c2VyLCBwYXNzd2QsIHNlcnZpY2UpCiAgZW5kCgogIGRlZiB0ZXJt aW5hdGUKICAgIEBjb25uLmxvZ29mZgogIGVuZAoKPWJlZ2luICAjIGFwcGxpY2F0aW9uIHNw ZWNpZmljIG1ldGhvZHMuLi4gY2hhbmdlIGFzIHlvdSBsaWtlCgogIGRlZiBzdHVkZW50cyAg ICMgc2FtcGxlIG1ldGhvZAogICAgcmV0dmFsID0gW10KICAgIGJlZ2luCiAgICAgIGN1ciA9 IEBjb25uLmV4ZWMoJ3NlbGVjdCBuYW1lIGZyb20gY2xhc3NfbWFzdGVyJykKICAgICAgY3Vy LmZldGNoIGRvIHxyb3d8CiAgICAgICAgcmV0dmFsLnB1c2gocm93WzBdKQogICAgICBlbmQK ICAgIHJlc2N1ZSBPQ0lFcnJvcgogICAgICBwICQhCiAgICBlbnN1cmUKICAgICAgY3VyLmNs b3NlCiAgICBlbmQKICAgIHJldHZhbAogIGVuZAoKPWVuZCAgIyBhcHBsaWNhdGlvbiBzcGVj aWZpYyBtZXRob2RzLi4uIGNoYW5nZSBhcyB5b3UgbGlrZQoKICBkZWYgZXhlYyhzcWwpCiAg ICByZXR2YWwgPSBbXQogICAgYmVnaW4KICAgICAgY3VyID0gQGNvbm4uZXhlYyhzcWwpCiAg ICAgIGN1ci5mZXRjaCBkbyB8cm93fAogICAgICAgIHJldHZhbC5wdXNoKHJvd1swXSkKICAg ICAgZW5kCiAgICByZXNjdWUgT0NJRXJyb3IKICAgICAgcCAkIQogICAgZW5zdXJlCiAgICAg IGN1ci5jbG9zZQogICAgZW5kCiAgICByZXR2YWwKICBlbmQKCmVuZAoKCgpjbGFzcyBDb25m aWcKICAjIHN5c3RlbS13aWRlIGNvbmZpZ3VyYXRpb24gbGlrZSBXaW5kb3dzJyByZWdpc3Rv cmllcwoKICBpbmNsdWRlIFNpbmdsZXRvbgoKICBkZWYgaW5pdGlhbGl6ZQogICAgQGhhc2gg PSBIYXNoLm5ldyAgICMgeyAnY29uZiBuYW1lJyA9PiAndmFsdWUnLCAnZm9vJyA9PiA1LCAu Li4gfQogICAgQG11dGV4ID0gTXV0ZXgubmV3CiAgZW5kCgogIGRlZiBzdG9yZShrZXksIHZh bHVlKQogICAgQG11dGV4LnN5bmNocm9uaXplIGRvCiAgICAgIEBoYXNoLnN0b3JlKGtleSwg dmFsdWUpCiAgICBlbmQKICBlbmQKICBhbGlhcyBbXT0gc3RvcmUKCiAgZGVmIGZldGNoKGtl eSkKICAgIEBtdXRleC5zeW5jaHJvbml6ZSBkbwogICAgICBAaGFzaC5mZXRjaChrZXkpCiAg ICBlbmQKICBlbmQKICBhbGlhcyBbXSBmZXRjaAplbmQKCgoKaWYgX19GSUxFX18gPT0gJDAK ICBUaHJlYWQuYWJvcnRfb25fZXhjZXB0aW9uID0gdHJ1ZQoKICAjIGNvbmZpZwogIGV2YWwo RmlsZS5vcGVuKCdjb25mLnJiJykucmVhZCkKICBjb25mID0gQ29uZmlnLmluc3RhbmNlCiAg dXJpID0gY29uZlsnZG9yYWNsZSddWydkcnVieSB1cmknXQogIHRvdXQgPSBjb25mWydkb3Jh Y2xlJ11bJ2RydWJ5IHRpbWVvdXQnXQogIHByaW50KHVyaSwgIlxuIikKCiAgIyBkYWVtb24K ICBwaWQgPSBmb3JrCiAgaWYgcGlkLm5pbD8KICAgICMgY2hpbGQgcHJvY2VzcwogICAgJHN0 ZG91dC5jbG9zZQogICAgJHN0ZGluLmNsb3NlCiAgICAkc3RkZXJyLmNsb3NlCgogICAgcXVl dWUgPSBEb3JhY2xlUXVldWUuaW5zdGFuY2UKCiAgICBEUmIuaW5zdGFsbF9pZF9jb252KERS YlJlZklkQ29udi5uZXcodG91dCkpCiAgICBEUmIuc3RhcnRfc2VydmljZSh1cmksIHF1ZXVl KQoKICAgIERSYi50aHJlYWQuam9pbgogIGVuZAogICMgcGFyZW50IHByb2Nlc3MKICBleGl0 IDAKZW5kCg== --------------Boundary_S-X=nmVNbv+JR Content-Type: application/octet-stream; name="drbrefid.rb" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="drbrefid.rb" cmVxdWlyZSAndGhyZWFkJwoKY2xhc3MgRFJiUmVmSWRDb252CgogIGRlZiBpbml0aWFsaXpl KHRpbWVfdG9fbGl2ZSkKICAgIEB0aW1lX3RvX2xpdmUgPSB0aW1lX3RvX2xpdmUKICAgIEB0 aHJfdGFibGUgPSB7fSAgICAgIyB7aWQgPT4gb2JqZWN0fQogICAgQG9ial90YWJsZSA9IHt9 ICAgICAjIHtpZCA9PiBraWxsZXIgdGhyZWFkfQogICAgQHRocl9zeW5jID0gTXV0ZXgubmV3 CiAgICBAb2JqX3N5bmMgPSBNdXRleC5uZXcKICBlbmQKCiAgZGVmIHRvX29iaihpZCkKICAg IG9iaiA9IE9iamVjdFNwYWNlLl9pZDJyZWYoaWQpCiAgICBzZXRfa2lsbGVyKGlkKQogICAg cmVzZXRfb2JqKGlkLCBvYmopCiAgICBvYmoKICBlbmQKCiAgZGVmIHRvX2lkKG9iaikKICAg IGlkID0gb2JqLmlkCiAgICBzZXRfa2lsbGVyKGlkKQogICAgcmVzZXRfb2JqKGlkLCBvYmop CiAgICBpZAogIGVuZAoKICAjIG5vdGU6IHNldF9raWxsZXIgYmVmb3JlIHJlc2V0X29iagog IGRlZiByZXNldF9vYmooaWQsIG9iaikKICAgIEBvYmpfc3luYy5zeW5jaHJvbml6ZSBkbwog ICAgICBAb2JqX3RhYmxlW2lkXSA9IG9iagogICAgZW5kCiAgZW5kCgogcHJpdmF0ZQogIGRl ZiBzZXRfa2lsbGVyKGlkKSAgICAgIyByZXNldCBraWxsZXIKICAgIEB0aHJfc3luYy5zeW5j aHJvbml6ZSBkbwogICAgICB0aHIgPSBAdGhyX3RhYmxlW2lkXQogICAgICBUaHJlYWQua2ls bCh0aHIpIGlmIHRocgogICAgICBAdGhyX3RhYmxlW2lkXSA9IGtpbGxlcihpZCkKICAgIGVu ZAogIGVuZAoKICBkZWYga2lsbGVyKGlkKQogICAgVGhyZWFkLnN0YXJ0IGRvCiAgICAgIHNs ZWVwKEB0aW1lX3RvX2xpdmUpCiAgICAgIHJlc2V0X29iaihpZCwgbmlsKSAgIyByZW1vdmUg aWQgZnJvbSB0YWJsZQogICAgZW5kCiAgZW5kCmVuZAp= --------------Boundary_S-X=nmVNbv+JR Content-Type: application/octet-stream; name="conf.rb" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="conf.rb" IyBjb25maWd1cmF0aW9uIGZpbGU6IFJ1Ynkgc2NyaXB0IGZpbGUKCnBhcmFtZXRlcnMgPSB7 CiAgJ2RvcmFjbGUnID0+IHsKICAgICd1c2VyJyA9PiAna3VtbycsCiAgICAncGFzc3dkJyA9 PiAna3Vtb3N1a2UnLAogICAgJ3NlcnZpY2UnID0+ICdmaXJlJywKICAgICdtaW5pbXVtIHNl cnZlcnMnID0+IDUsCiAgICAnd2FpdCcgPT4gMC4xLAogICAgJ2RydWJ5IHVyaScgPT4gJ2Ry dWJ5Oi8vbG9jYWxob3N0OjE3NjQwJywKICAgICdkcnVieSB0aW1lb3V0JyA9PiAzMCwgICMg c2Vjb25kCiAgfSwKfQoKcGFyYW1ldGVycy5lYWNoX3BhaXIgZG8gfGtleSwgdmFsdWV8CiAg Q29uZmlnLmluc3RhbmNlLnN0b3JlKGtleSwgdmFsdWUpCmVuZAo= --------------Boundary_S-X=nmVNbv+JR Content-Type: application/octet-stream; name="clnt.rb" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="clnt.rb" cmVxdWlyZSAnZHJicmVmaWQnCnJlcXVpcmUgJ2RyYi9kcmInCgp0aGVyZSA9IEFSR1Yuc2hp ZnQKdW5sZXNzIHRoZXJlCiAgJHN0ZGVyci5wdXRzKCJ1c2FnZTogI3skMH0gPHNlcnZlcl91 cmk+IikKICBleGl0IDEKZW5kCgpEUmIuc3RhcnRfc2VydmljZQpkb3JhY2xlID0gRFJiT2Jq ZWN0Lm5ldyhuaWwsIHRoZXJlKQpjb25uID0gZG9yYWNsZS5wb3AKcmVzdWx0ID0gY29ubi5l eGVjKCdzZWxlY3Qgc3lzZGF0ZSBmcm9tIGR1YWwnKQpwIHJlc3VsdAoK --------------Boundary_S-X=nmVNbv+JR--