[#24536] 「Rubyの落し方」 v.s. ruby_1_8 — akira yamada / やまだあきら <akira@...>

<URL:http://jp.rubyist.net/magazine/?0002-RubyCore>

40 messages 2004/10/20
[#24541] Re: 「Rubyの落し方」 v.s. ruby_1_8 — Yukihiro Matsumoto <matz@...> 2004/10/20

まつもと ゆきひろです

[#24599] 1.8.2 preview3? — akira yamada / やまだあきら <akira@...> 2004/10/26

2004-10-20 (水) の 21:38 +0900 に Yukihiro Matsumoto さんは書きました:

[#24605] Re: 1.8.2 preview3? — akira yamada / やまだあきら <akira@...> 2004/10/27

2004-10-26 (火) の 16:16 +0900 に akira yamada / やまだあきら さんは書きました:

[#24606] Re: 1.8.2 preview3? — Yukihiro Matsumoto <matz@...> 2004/10/27

まつもと ゆきひろです

[#24608] Re: 1.8.2 preview3? — akira yamada / やまだあきら <akira@...> 2004/10/27

2004-10-27 (水) の 11:48 +0900 に Yukihiro Matsumoto さんは書きました:

[#24620] Re: 1.8.2 preview3? — akira yamada / やまだあきら <akira@...> 2004/10/27

2004-10-27 (水) の 12:42 +0900 に akira yamada / やまだあきら さんは書きました:

[#24629] Re: 1.8.2 preview3? — Tanaka Akira <akr@...17n.org> 2004/10/29

In article <1098888819.9446.14.camel@rice.p.arika.org>,

[ruby-dev:24561] PStore#transaction

From: IWATSUKI Hiroyuki <don@...>
Date: 2004-10-21 13:10:10 UTC
List: ruby-dev #24561
岩月と申します。

PStore.newに指定したファイルがまだ存在しない場合、PStore#transactionを呼
び出すと例外 Errno::ENOENT が発生します。

  db = PStore.new("foo") # ファイル foo は存在していない
  db.transaction(true) do
  end
  # => Errno::ENOENT

添付しました差分のようにread_only = falseとほぼ同様の処理になるように修
正しました。read_only = falseとの違いはファイルが新規作成されないことで
すが、作成した方が良いかもしれません(自信ありません)。

なお、差分はCVS HEADとのものですが、1.8でも同様に修正する必要がありま
す。そちらもお願いいたします。

-- 
Hiroyuki Iwatsuki <URL:mailto:don@na.rim.or.jp>


Attachments (1)

pstore-1.23-200410212152.diff (889 Bytes, text/x-diff)
Index: lib/pstore.rb
===================================================================
RCS file: /home/don/ruby/cvs/src/ruby/lib/pstore.rb,v
retrieving revision 1.23
diff -u -p -u -r1.23 pstore.rb
--- lib/pstore.rb	6 Oct 2004 07:40:03 -0000	1.23
+++ lib/pstore.rb	21 Oct 2004 12:32:30 -0000
@@ -104,10 +104,14 @@ class PStore
         commit_new(file) if FileTest.exist?(new_file)
         content = file.read()
       else
-        file = File.open(@filename, File::RDONLY)
-        file.binmode
-        file.flock(File::LOCK_SH)
-        content = (File.read(new_file) rescue file.read())
+        begin
+          file = File.open(@filename, File::RDONLY)
+          file.binmode
+          file.flock(File::LOCK_SH)
+          content = (File.read(new_file) rescue file.read())
+        rescue Errno::ENOENT
+          content = ""
+        end
       end
 
       if content != ""

In This Thread

Prev Next