[#29469] エラーを捕まえたいのですが ... — Sakae Kobayashi <sakae@...>
困った時に出てくる、小林榮です。
まつもと ゆきひろです
In message <988708753.422219.10637.nullmailer@ev.netlab.zetabits.com>
[#29471] rd2man について — "NAITOH Jun" <naitoh@...>
こんにちは、内藤と申します。
[#29480] xpstore — akira yamada / やまだあきら <akira@...>
[#29490] Re: [ruby-talk:14555] Ruby as a Mac OS/X scripting language — maili31s@... (SugHimsi == SUGIHARA Hiroshi)
すぎむし速報。↓だそうです。
古暮でございます。MacOS X をいじり始めて一週間程度なのですが,
始めて投稿します。福田と申します。メインにはMacを使っていますので、Rubyを直
古暮でございます。
こんにちは、近藤と申します。
古暮でございます。
[#29504] クラスブラウザ with ReFe — kadu <kadu3@...16.alpha-net.ne.jp>
こんにちは。kadu です。
[#29513] drb-1.3.2 — Masatoshi SEKI <m_seki@...>
[#29521] A problem with the latest irb — "Akinori MUSHA" <knu@...>
IRB 最新版(0.7.3)ですが、どういうわけか、定義したメソッドを
[#29524] tr range? — kiri@...
桐山です。
新井です。
桐山です。
新井です。
[#29544] enriching standard extention libraries: syslog, zlib, etc. — "Akinori MUSHA" <knu@...>
Syslog モジュールを標準添付にするというのはどうでしょうか。
[#29547] strftime.c でのエラー — "Kazuaki Miyauchi" <miyauchk@...>
宮内といいます。
[#29550] UDP でバイナリデータを送りたいのですが? — "Kenji Takahashi" <kenji4553@...>
はじめまして。
[#29587] duplicate fragment identifiers in ruby-refm.html — Tanaka Akira <akr@...17n.org>
ふと気がついたのですが、
[#29597] media watch 2001.05.08 — Noritsugu Nakamura <nnakamur@...>
[#29603] Importing shell.rb — "Akinori MUSHA" <knu@...>
At Mon, 7 May 2001 14:50:32 +0900,
[#29604] Importing eachdelegator.rb — "Akinori MUSHA" <knu@...>
少し前に登場した、岡田さん作の EachDelegator:
まつもと ゆきひろです
At Wed, 9 May 2001 17:58:34 +0900,
原です。
[#29644] rwiki.rb でエラー — norio goto <goto@...>
お世話になります、後藤@横河工事です。
後藤@横河工事です。
後藤@横河工事です。
In <20010514192948A.goto@yokogawa-kouji.co.jp>
後藤@横河工事です。
後藤@横河工事です。
後藤@横河工事です。
[#29647] String#index — OHARA Shigeki <os@...>
大原です。
[#29665] frozen string in a |= b — kiri@...
桐山です。
[#29675] with(obj){ } が欲しい。 — Take_tk <ggb03124@...>
例によって、ワタシ好みののりクエストですみません。
さくです。
Take_tkさんの<20010515205133.DFBA.GGB03124@nifty.ne.jp>から
たけ(tk)です。
まつもと ゆきひろです
たけ(tk)です。
まつもと ゆきひろです
たけ(tk)です。
[#29707] OBJECT DAY2001 — "K.Kosako" <kosako@...>
OBJECT DAY2001から帰ってきました。
まつもと ゆきひろです
渡辺哲也です。
YARPC関連で動いてお騒がせしている(_o_)高橋征義です。
あおきです。
なひです。
なひです。
いがらしです。
なひです。
あおきです。
[#29720] rand(1<<32) — TAKEUCHI Hideki <take@...>
竹内です。
[#29721] Cygwin で Ruby をコンパイルするとエラーがでます。 — "Inoue" <inoue@...>
はじめまして、最近Rubyをはじめました井上と申します。
[#29759] WinNT Ruby CGI KILL? — "Inoue" <inoue@...>
井上です。
[#29766] インストールができません。 — Jun-ichi Murakoshi <murakosi@...>
長沢@新大OB です。
[#29788] marshaled time format differ — IWATSUKI Hiroyuki <don@...>
岩月と申します。
まつもと ゆきひろです
岩月と申します。
岩月と申します。
From: IWATSUKI Hiroyuki <don@na.rim.or.jp>
岩月と申します。
岩月と申します。
At Tue, 29 May 2001 00:23:31 +0900,
岩月と申します。
At Tue, 29 May 2001 09:10:26 +0900,
[#29812] A request to RAA (was Re: YARPC 19101) — Takahiro Kambe <taca@...>
In message <20010527174810.632346.eban@os.rim.or.jp>
[#29824] Windows 版 Ruby — "U.Nakamura" <usa@...>
こんにちは、なかむら(う)です。
[#29853] "" で行われる展開を eval 無しで… — ABE Shigeru <shiger-a@...>
みなさま、はじめまして。阿部といいます。
From: ABE Shigeru <shiger-a@nifty.com>
阿部です。
From: ABE Shigeru <shiger-a@nifty.com>
こんにちは、阿部です。
[#29864] ActiveScriptRuby について質問です — たくみ <taku3@...>
原 忠司と申します。
[#29880] autoconf.rb — nobu.nakada@...
なかだです。
[#29886] mod_ruby and eruby — norio goto <goto@...>
後藤@横河工事です。
始めまして,田代と申します.
前田です。
In message <87hey3pg1w.wl@studly.priv.netlab.zetabits.co.jp>
[#29911] w3m のコンパイルエラーが起きました — "Inoue" <inoue@...>
井上です。
[#29941] Ruby ライセンスについて — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろです
In message <991297854.779223.23013.nullmailer@ev.netlab.zetabits.com>
At Thu, 31 May 2001 18:00:18 +0900,
有馬@横浜、忙しいはず..です。
[ruby-list:29508] Re: [ruby-ext:01642] Re: o_dbm
Tue, 1 May 2001 11:05:48 +0900 頃の
Mail-Count: 29468
Subject: [ruby-list:29468] Re: [ruby-ext:01642] Re: o_dbm
についてのお話にて やまだは言いました…
(あ == やまだ あきら)
In article 29468, <20010501020547.20C1135446@rb.arika.org>
あ> ただ, その過程でいくつかbugらしきものを見付けたので
あ> patchを作ってみました. いかがでしょうか.
友人におしえてもらったのですが
has_root_key? 関係でもう少しbugがありそうです.
前に投げたやつも含んだpatchを添付します.
--
やまだ あきら <URL:http://arika.org/>
(akira@arika.org, akira@ruby-lang.org or akira@ad-hoc.org)
--- /usr/lib/ruby/1.6/o_dbm.rb Tue Apr 24 23:02:41 2001
+++ o_dbm.rb Fri May 4 19:04:40 2001
@@ -181,9 +181,9 @@
def root_names
keys = []
- each_keys do
+ each_key do
|key|
- keys.push = keys
+ keys.push(key)
end
keys
end
@@ -191,7 +191,7 @@
def size
no = 0
- each_keys do
+ each_key do
|key|
no += 1
end
@@ -221,7 +221,7 @@
def has_root_name?(root_name, mode = SCAN_DB)
return true if @read_cache.key?(root_name)
return false if mode == SCAN_CACHE_ONLY
- @db.has_key?
+ @db.has_key?(root_name)
end
alias root_name? has_root_name?
alias include? has_root_name?
@@ -286,7 +286,7 @@
if mode != SCAN_CACHE_ONLY
@db.each_key do
|key|
- yield key unless mode == SCANL_DB_ONLY or @read_cache[key] == NULL
+ yield key if mode == SCAN_DB_ONLY or @read_cache[key] == NULL
end
end
end
@@ -327,8 +327,8 @@
end
@transaction_mode = STATIC_TRANSACTION_MODE
@current_transaction = StaticTransaction.new(self, mode, outer)
- @current_transaction.transaction do
- yield @current_transaction
+ @current_transaction.transaction do |current_transaction|
+ yield current_transaction
end
else
if @transaction_mode == STATIC_TRANSACTION_MODE
@@ -368,8 +368,7 @@
txn.outer.write_cache = txn.write_cache.dup
txn.outer.delete_cache = txn.delete_cache.dup
else
- close(HOLD_READ_CACHE)
- @db = @db_adapter.open(@db_name)
+ flush_db
end
end
@@ -418,6 +417,7 @@
for key, value in @write_cache
@db[key] = Marshal.dump(value)
end
+ @db.commit
@write_cache.clear
end
private :flush_db
@@ -511,7 +511,7 @@
def transaction
@status = START
begin
- txn, value = catch(ABORT_LABEL){[nil, yield(@current_transaction)]}
+ txn, value = catch(ABORT_LABEL){[nil, yield(self)]}
if txn
@status = ABORTING
unless txn.equal?(self)
@@ -552,7 +552,7 @@
def checkpoint
case @status
when START
- @odbm.flush(txn)
+ @odbm.flush(self)
when COMMITED, ABORTED
Transaction.Fail ErrClosedTransaction
end
@@ -637,7 +637,7 @@
# store value with <key>
def []=(key, value)
- ODBM.Fail ErrAdapterInterfaceNotImplement, "[]"
+ ODBM.Fail ErrAdapterInterfaceNotImplement, "[]="
end
def has_key?(key)
@@ -645,6 +645,7 @@
|k|
return true if k == key
end
+ false
end
def each(&block)
@@ -665,6 +666,11 @@
ODBM.Fail ErrAdapterInterfaceNotImplement, "delete"
end
+ # commit database
+ def commit
+ ODBM.Fail ErrAdapterInterfaceNotImplement, "commit"
+ end
+
# close database
def close
ODBM.Fail ErrAdapterInterfaceNotImplement, "close"
@@ -674,6 +680,10 @@
autoload :DBM, "dbm"
class DBM_Adapter<DB_Adapter
def self.open(name)
+ new(name)
+ end
+
+ def initialize(name)
@db = DBM.open(name)
end
@@ -682,11 +692,11 @@
end
def []=(key, value)
- @db[key] = valuep
+ @db[key] = value
end
- def key?(key)
- @db.key?(key)
+ def has_key?(key)
+ @db.has_key?(key)
end
def each(&block)
@@ -701,7 +711,16 @@
@db.each_value &block
end
+ def delete(key)
+ @db.delete(key)
+ end
+
+ def commit
+ # noop
+ end
+
def close
+ commit
@db.close
@db = nil
end
@@ -709,48 +728,72 @@
autoload :GDBM, "gdbm"
class GDBM_Adapter<DBM_Adapter
- def self.open(name)
+ def initialize(name)
@db = GDBM.open(name)
end
end
autoload :SDBM, "sdbm"
class SDBM_Adapter<DBM_Adapter
- def self.open(name)
+ def initialize(name)
@db = SDBM.open(name)
end
end
class PHash_Adapter<DB_Adapter
def self.open(name)
+ new(name)
+ end
+
+ def initialize(name)
@db_name = name
- @db = File.open(name)
- ODBM.Fail ErrAdapterInterfaceNotImplement, "open"
+ if File.exist?(name)
+ file = File::open(name, 'r')
+ begin
+ @hash = Marshal.load(file)
+ ensure
+ file.close
+ end
+ else
+ @hash = {}
+ end
end
# restore value with <key>
def [](key)
- ODBM.Fail ErrAdapterInterfaceNotImplement, "[]"
+ @hash[key]
end
# store value with <key>
def []=(key, value)
- ODBM.Fail ErrAdapterInterfaceNotImplement, "[]"
+ @hash[key] = value
end
+ def has_key?(key)
+ @hash.has_key?(key)
+ end
# access all keys in database.
def each_key(&block)
- ODBM.Fail ErrAdapterInterfaceNotImplement, "each_key"
+ @hash.each_key {|key| block.call(key)}
end
# delete value with <key>
def delete(key)
- ODBM.Fail ErrAdapterInterfaceNotImplement, "delete"
+ @hash.delete(key)
+ end
+
+ # commit database
+ def commit
+ newfile = @db_name + '.new'
+ file = open(newfile, 'w')
+ Marshal.dump(@hash, file)
+ file.close
+ File.rename(newfile, @db_name)
end
# close database
def close
- ODBM.Fail ErrAdapterInterfaceNotImplement, "close"
+ commit
end
end
end