[#36071] サマータイムでのsleepの動作について — Yoshikawa <yoshixool@...>
吉川と申します。
こんにちは、なかむら(う)です。
吉川です。
こんにちは、なかむら(う)です。
久保です。
> 2008/9/2 U.Nakamura <usa@garbagecollect.jp>:
久保です。
こんにちは、なかむら(う)です。
[#36082] x86_64環境でMarshal.dumpの不具合 — Kouichi Ushijima <ushijima@...>
NTTレゾナントの牛島と申します。
[#36096] [ANN] Ruby 1.9.1仕様凍結 — "Yugui (Yuki Sonoda)" <yugui@...>
Yuguiです。
成瀬です。
[#36124] [Bug: 1.9] undefined method `readpartial' for TestFileUtils::Stream — SASADA Koichi <ko1@...>
ささだです.
[#36132] [Feature #542] cgi.rb : CGI::unescape return encoding — Takeyuki Fujioka <redmine@...>
Feature #542: cgi.rb : CGI::unescape return encoding
In article <48be847681f43_55585b236f8341@redmine.ruby-lang.org>,
成瀬です。
藤岡です。
藤岡です。
In article <48C0C20E.4000307@rabbix.jp>,
藤岡です。
In article <48C76705.5000202@rabbix.jp>,
藤岡です。
In article <48C8A83E.8000200@rabbix.jp>,
藤岡です。
成瀬です。
藤岡です。
藤岡です。
藤岡です。
西山和広です。
藤岡です。
成瀬です。
藤岡です。
藤岡です。
西山和広です。
[#36147] GNU iconv dependency — Takahiro Kambe <taca@...>
こんにちは。
成瀬です。
In message <48C544C3.6090607@airemix.jp>
成瀬です。
In message <48C7D1E1.5040403@airemix.jp>
Takahiro Kambe wrote:
In message <48C7EC6B.5060306@airemix.jp>
Takahiro Kambe wrote:
In message <48C7F8DD.7060001@airemix.jp>
成瀬です。
In message <48C7FE1B.1050900@airemix.jp>
Takahiro Kambe wrote:
なかだです。
In message <48C95715.5080708@ruby-lang.org>
[#36167] OpenSSL Test Failure — Tadashi Saito <shiba@...2.accsnet.ne.jp>
斎藤です。
[#36174] [Feature #546] String#gsub と Strnig#scan のブロックパラメータの一致 — Motonori IWAMURO <redmine@...>
Feature #546: String#gsub と Strnig#scan のブロックパラメータの一致
[#36201] ソケット関連の定数がいろいろ未定義 (Re: [Bug #547](Closed) IPV6系の定数が未定義) — "IWAMURO Motonori" <deenheart+ruby@...>
岩室です。
岩室です。
[#36233] [Bug #554] Sync_m#sync_try_lockの引数が無視されている — akira yamada <redmine@...>
Bug #554: Sync_m#sync_try_lockの引数が無視されている
[#36245] [Feature #546] String#gsub と Strnig#scan のブロックパラメータの一致 — Yui NARUSE <redmine@...>
チケット #546 が更新されました。 (by Yui NARUSE)
[#36281] 合成文字の2コードポイント目 — "NARUSE, Yui" <naruse@...>
成瀬です。
まつもと ゆきひろです
In article <E1KeKG9-0004NC-Jb@x61.netlab.jp>,
まつもと ゆきひろです
In article <E1KeRWe-00037N-Vb@x61.netlab.jp>,
成瀬です。
In article <48CC86FD.3000409@airemix.jp>,
Tanaka Akira wrote:
In article <48CE068E.3080701@airemix.jp>,
成瀬です。
まつもと ゆきひろです
In article <E1KfNyE-0005XO-0P@x61.netlab.jp>,
まつもと ゆきひろです
In article <E1KfQYp-00032T-F6@x61.netlab.jp>,
まつもと ゆきひろです
In article <E1KfRzT-0004jm-DU@x61.netlab.jp>,
In article <87tzcg3dt2.fsf@fsij.org>,
At 21:44 08/09/18, Tanaka Akira wrote:
[#36290] adding Pathname#abspath() — "Akinori MUSHA" <knu@...>
SUSv3のrealpath(3)の項には、存在しないコンポーネントがあったら
名前が良くなかったですね。Pathname#resolve()でどうでしょうか。
In article <86wshfn0zl.knu@iDaemons.org>,
At Sun, 14 Sep 2008 23:20:56 +0900,
In article <86vdwxn9rh.knu@iDaemons.org>,
At Mon, 22 Sep 2008 12:43:18 +0900,
In article <86od2gcvvj.knu@iDaemons.org>,
At Wed, 24 Sep 2008 02:02:59 +0900,
In article <86ljxgd0jt.knu@iDaemons.org>,
At Fri, 26 Sep 2008 02:29:43 +0900,
田中さん、この件はどうでしょう。
In article <86tz7s28my.knu@iDaemons.org>,
At Wed, 21 Jan 2009 21:54:34 +0900,
In article <86sknc0y2o.knu@iDaemons.org>,
[#36300] [patch] performance improvement patch for benchmark/bm_so_count_words.rb — "masayoshi takahashi" <maki@...>
高橋征義です。
まつもと ゆきひろです
高橋征義です。
[#36325] mathn (#**) — Tadayoshi Funaba <tadf@...>
mahtn した場合、
けいじゅ@いしつかです.
> 消したのは [ruby-dev: 20780] からのスレッドなのですが, その中で消して
mathn の課題はそれはそれとして、1.9 ではこの場合、やはり mathn しなくて
[#36329] [Bug:1.9] emacs21で色が付かない — Kazuhiro NISHIYAMA <zn@...>
西山和広です。
[#36336] [Bug #571] IPv6系の定数が未定義 (for 1.8) — Motonori IWAMURO <redmine@...>
Bug #571: IPv6系の定数が未定義 (for 1.8)
[#36346] add "Error" suffix for Encoding Exceptions — Tadashi Saito <shiba@...2.accsnet.ne.jp>
斎藤と申します。
成瀬です。
斎藤と申します。
遠藤です。
こんにちは、なかむら(う)です。
At 22:25 08/09/18, U.Nakamura wrote:
まつもと ゆきひろです
In article <E1KgbIm-00010I-Qi@x61.netlab.jp>,
成瀬です。
[#36349] Complex/image — Tadayoshi Funaba <tadf@...>
[ruby-math:00543] を読んで、image はやめて imag に変更したらどうか、つ
けいじゅ@いしつかです.
> imageとimagの件ですが, 現行では両方定義されているけど, imageは削除って
けいじゅ@いしつかです.
> Pythonは複素数リテラルあるみたいですね. そしたら, Rubyも分数リテラルと
[#36352] Temporarily removing Precision module — Yugui <yugui@...>
Yuguiです。
[#36448] [Feature #583] TmpdirとTempfile — Yuki Sonoda <redmine@...>
Feature #583: TmpdirとTempfile
[#36461] {Complex,Rational}::Unify — Tadayoshi Funaba <tadf@...>
Complex と Rational では、Unify が定義された場合、可能なら整数等に正規
まつもと ゆきひろです
> mathn.rbはcomplex.rbなどと同一の作者が同時に(一体として)作成
けいじゅ@いしつかです.
> まず, Unifyなしで動作するように, mathn側で対応させてください. それから,
けいじゅ@いしつかです.
> mathn動かなくなっていると思うので, あまり大丈夫ではありません.
けいじゅ@いしつかです.
> これらのメソッドを呼び出すのではなく, 再定義することによって振る舞いを
けいじゅ@いしつかです.
> 当然, mathnで対応することはできます.
けいじゅ@いしつかです.
> >それで、僕が改めて言うまでもないことですが、mathn は石塚さんの担当なの
けいじゅ@いしつかです.
まつもと ゆきひろです
けいじゅ@いしつかです.
まつもと ゆきひろです
けいじゅ@いしつかです.
Yuguiです。
けいじゅ@いしつかです.
Yuguiです。
こんにちは、なかむら(う)です。
[#36493] [Bug: 1.9] tmpdir on mswin32 — SASADA Koichi <ko1@...>
ささだです.
[#36505] 文字コード変換の追加 (悲鳴) — Martin Duerst <duerst@...>
http://redmine.ruby-lang.org/wiki/ruby/DevelopersMeeting20080922
[#36511] [Bug #595] Fiber ignores ensure clause — Koichi Sasada <redmine@...>
Bug #595: Fiber ignores ensure clause
[#36512] Encoding.default_internal のためのパッチ — Martin Duerst <duerst@...>
[ruby-core:18774] に Michael Selig から Encoding::default_internal
成瀬です。
まつもと ゆきひろです
こんにちは、なかむら(う)です。
まつもと ゆきひろです
成瀬です。
まつもと ゆきひろです
永井@知能.九工大です.
まつもと ゆきひろです
Yukihiro Matsumoto さんは書きました:
まつもと ゆきひろです
なかだです。
まつもと ゆきひろです
At 14:58 08/09/25, Yukihiro Matsumoto wrote:
まつもと ゆきひろです
成瀬です。
まつもと ゆきひろです
In article <E1Kj3Iz-0003yT-HU@x61.netlab.jp>,
[#36528] driver and target of test-knownbug/btest-miniruby — "U.Nakamura" <usa@...>
こんにちは、なかむら(う)です。
[#36628] [IA-64]BigDecimal#sqrt の仕様 — TAKANO Mitsuhiro <takano32@...>
こんにちは
高野です。
まつもと ゆきひろです
高野です。
まつもと ゆきひろです
[#36631] net/pop.rb: APOPの脆弱性対応 — Kazuhiro NISHIYAMA <zn@...>
西山和広です。
[ruby-dev:36560] Re: adding Pathname#resolve (was: adding Pathname#abspath())
At Wed, 24 Sep 2008 02:02:59 +0900,
Tanaka Akira wrote:
> In article <86od2gcvvj.knu@iDaemons.org>,
> "Akinori MUSHA" <knu@iDaemons.org> writes:
>
> > 似た動作の想起を条件にするのは、 realpath を含む名前にするか、
> > あるいは realpath に引数を追加するかの二択と考えてよいでしょうか。
>
> real という単語が入ってれば似ているように思います。
しかし、 real という単語が入るのに実際に存在しないパスを返す
のは奇妙ではないでしょうか。あくまで realpath という既知の名前
からしか機能は想起されないと思います。real_path は気持ち悪いし、
*_realpath や realpath_* も適当なものが思いつきませんでした。
bsd_realpath, realpath_butlast, realpath_till_penult,
almost_realpath, not_quite_realpath, ...
同じ機能は既存の公開および内部メソッドを使っても簡単には実装
できなかったのでなんとか入れたいと思うのですが。
~ の展開と相対パスの展開を行うメソッドが expand_path なので、
symlink の解決と相対パスの展開を行うメソッドが resolve_path と
いうのは悪くないと思っています。realpath との関連はさほど大事
でしょうか。
> > であれば私は後者を推したいです。フラグ引数が廃止された過去が
> > あるので抵抗があったのですが、もう数年経っているのでトラブルは
> > ないでしょうね。
>
> フラグより違う名前のほうがいいんじゃないかという気がします。
>
> この件については動的にどちらかの挙動を選びたいということはな
> さそうな気がしますし、名前が挙動を表すとプログラムがわかりや
> すくなるので。
それはそうですね。先の実装はフラグを受け付けるようになって
いましたが、フラグを取るメソッドは private に隠そうと思います。
--
Akinori MUSHA / http://akinori.org/
* lib/pathname.rb (Pathname#realpath_rec, Pathname#resolve_path):
Add Pathname#resolve_path, a variant of #realpath that allows
the last component of pathname to be nonexistent.
Index: lib/pathname.rb
===================================================================
--- lib/pathname.rb (revision 19545)
+++ lib/pathname.rb (working copy)
@@ -76,9 +76,9 @@
#
# === Core methods
#
-# These methods are effectively manipulating a String, because that's all a path
-# is. Except for #mountpoint?, #children, and #realpath, they don't access the
-# filesystem.
+# These methods are effectively manipulating a String, because that's
+# all a path is. Except for #mountpoint?, #children, #resolve_path
+# and #realpath, they don't access the filesystem.
#
# - +
# - #join
@@ -90,6 +90,7 @@
# - #each_filename
# - #cleanpath
# - #realpath
+# - #resolve_path
# - #children
# - #mountpoint?
#
@@ -411,7 +412,7 @@ class Pathname
end
private :cleanpath_conservative
- def realpath_rec(prefix, unresolved, h)
+ def realpath_rec(prefix, unresolved, h, strict, last = true)
resolved = []
until unresolved.empty?
n = unresolved.shift
@@ -428,14 +429,20 @@ class Pathname
prefix, *resolved = h[path]
end
else
- s = File.lstat(path)
+ begin
+ s = File.lstat(path)
+ rescue Errno::ENOENT => e
+ raise e if strict || !last || !unresolved.empty?
+ resolved << n
+ break
+ end
if s.symlink?
h[path] = :resolving
link_prefix, link_names = split_names(File.readlink(path))
if link_prefix == ''
- prefix, *resolved = h[path] = realpath_rec(prefix, resolved + link_names, h)
+ prefix, *resolved = h[path] = realpath_rec(prefix, resolved + link_names, h, strict, unresolved.empty?)
else
- prefix, *resolved = h[path] = realpath_rec(link_prefix, link_names, h)
+ prefix, *resolved = h[path] = realpath_rec(link_prefix, link_names, h, strict, unresolved.empty?)
end
else
resolved << n
@@ -448,22 +455,39 @@ class Pathname
end
private :realpath_rec
- #
- # Returns a real (absolute) pathname of +self+ in the actual filesystem.
- # The real pathname doesn't contain symlinks or useless dots.
- #
- # No arguments should be given; the old behaviour is *obsoleted*.
- #
- def realpath
+ def resolve_path_internal(strict = false)
path = @path
prefix, names = split_names(path)
if prefix == ''
prefix, names2 = split_names(Dir.pwd)
names = names2 + names
end
- prefix, *names = realpath_rec(prefix, names, {})
+ prefix, *names = realpath_rec(prefix, names, {}, strict)
self.class.new(prepend_prefix(prefix, File.join(*names)))
end
+ private :resolve_path_internal
+ #
+ # Returns the real (absolute) pathname of +self+ in the actual
+ # filesystem not containing symlinks or useless dots.
+ #
+ # All components of the pathname must exist when this method is
+ # called.
+ #
+ # No arguments should be given; the old behaviour is *obsoleted*.
+ #
+ def realpath
+ resolve_path_internal(true)
+ end
+
+ #
+ # Returns the real (absolute) pathname of +self+ in the actual filesystem.
+ # The real pathname doesn't contain symlinks or useless dots.
+ #
+ # The last component of the pathname can be nonexistent.
+ #
+ def resolve_path
+ resolve_path_internal(false)
+ end
# #parent returns the parent directory.
#
Index: test/pathname/test_pathname.rb
===================================================================
--- test/pathname/test_pathname.rb (revision 19545)
+++ test/pathname/test_pathname.rb (working copy)
@@ -273,6 +273,8 @@ class TestPathname < Test::Unit::TestCas
Pathname.new(path).realpath.to_s
end
+ class NoException < Exception; end
+
def test_realpath
begin
File.symlink(nil, nil)
@@ -281,10 +283,42 @@ class TestPathname < Test::Unit::TestCas
rescue TypeError
end
Dir.mktmpdir('rubytest-pathname') {|dir|
+ assert_raises(Errno::ENOENT) { realpath("#{dir}/not-exist") }
File.symlink("not-exist-target", "#{dir}/not-exist")
- assert_raise(Errno::ENOENT) { realpath("#{dir}/not-exist") }
+ assert_raises(Errno::ENOENT) { realpath("#{dir}/not-exist") }
+ File.symlink("../#{File.basename(dir)}/./not-exist-target", "#{dir}/not-exist2")
+ assert_raises(Errno::ENOENT) { realpath("#{dir}/not-exist2") }
+ File.open("#{dir}/exist-target", "w") {}
+ File.symlink("../#{File.basename(dir)}/./exist-target", "#{dir}/exist")
+ assert_raises(NoException) { realpath("#{dir}/exist"); raise NoException }
File.symlink("loop", "#{dir}/loop")
- assert_raise(Errno::ELOOP) { realpath("#{dir}/loop") }
+ assert_raises(Errno::ELOOP) { realpath("#{dir}/loop") }
+ }
+ end
+
+ def resolve_path(path)
+ Pathname.new(path).resolve_path.to_s
+ end
+
+ def test_resolve_path
+ begin
+ File.symlink(nil, nil)
+ rescue NotImplementedError
+ return
+ rescue TypeError
+ end
+ Dir.mktmpdir('rubytest-pathname') {|dir|
+ assert_raises(NoException) { resolve_path("#{dir}/not-exist"); raise NoException }
+ assert_raises(Errno::ENOENT) { realpath("#{dir}/not-exist/not-exist-child") }
+ File.symlink("not-exist-target", "#{dir}/not-exist")
+ assert_raises(NoException) { resolve_path("#{dir}/not-exist"); raise NoException }
+ File.symlink("../#{File.basename(dir)}/./not-exist-target", "#{dir}/not-exist2")
+ assert_raises(NoException) { resolve_path("#{dir}/not-exist2"); raise NoException }
+ File.open("#{dir}/exist-target", "w") {}
+ File.symlink("../#{File.basename(dir)}/./exist-target", "#{dir}/exist")
+ assert_raises(NoException) { resolve_path("#{dir}/exist"); raise NoException }
+ File.symlink("loop", "#{dir}/loop")
+ assert_raises(Errno::ELOOP) { resolve_path("#{dir}/loop") }
}
end