[#45906] ' failures. — Tanaka Akira <akr@...>
' の扱いが変化したことで、テストが失敗しているようです。
9 messages
2012/07/04
[#45910] [ruby-trunk - Bug #6694][Open] Thread.new without block. — "ko1 (Koichi Sasada)" <redmine@...>
24 messages
2012/07/04
[#45928] Re: [ruby-cvs:43524] kosaki:r36348 (trunk): * include/ruby/ruby.h: Removed RUBY_GLOBAL_SETUP complely. It is — SASADA Koichi <ko1@...>
ささだです.
3 messages
2012/07/09
[#45973] [ruby-trunk - Bug #6751][Assigned] remove tempfiles early. — "akr (Akira Tanaka)" <akr@...>
4 messages
2012/07/18
[#45976] [ruby-trunk - Bug #6756][Open] FileUtils.rm_rf がアクセス権のない空ディレクトリを削除しない — "fumiyas (Fumiyasu SATOH)" <fumiyas@...>
9 messages
2012/07/20
[#45977] [ruby-trunk - Feature #6757][Open] [PATCH] Add Process.getsid — "fumiyas (Fumiyasu SATOH)" <fumiyas@...>
6 messages
2012/07/20
[#46012] [ruby-trunk - Feature #6812][Open] Refactor gc.c — "authorNari (Narihiro Nakamura)" <authorNari@...>
13 messages
2012/07/30
[ruby-dev:45942] [ruby-trunk - Feature #6587][Assigned] proposal: adding new methods File.rootname and Pathname#rootname
From:
"usa (Usaku NAKAMURA)" <usa@...>
Date:
2012-07-13 11:48:41 UTC
List:
ruby-dev #45942
Issue #6587 has been updated by usa (Usaku NAKAMURA).
Status changed from Open to Assigned
Assignee changed from usa (Usaku NAKAMURA) to matz (Yukihiro Matsumoto)
なぜか私が担当になってましたが、それが通るなら勝手に入れるよ!
というわけでまつもとさんよろしくおねがいします。
----------------------------------------
Feature #6587: proposal: adding new methods File.rootname and Pathname#rootname
https://bugs.ruby-lang.org/issues/6587#change-28004
Author: usa (Usaku NAKAMURA)
Status: Assigned
Priority: Normal
Assignee: matz (Yukihiro Matsumoto)
Category: core
Target version: 2.0.0
=begin
みんな大好き Unixen ではパスの先頭は '/' で始まるものという暗黙の前提がありますが、Windows ではドライブレターおよび UNC というものがあるのでその前提が成り立たないことは広く知られていると思います。
Ruby はドライブレターや UNC はそれなりに適切に取り扱うようになっていますが、残念ながらパス名を処理する際には依然としてロジックを自前で用意する必要があります。
例えば ruby 配布物の test/ 以下を見ると、独自にドライブレター周りを扱おうとしているコードが散見されますが、それぞれ異なる処理を書いており、UNC や拡張パス名(という名前でいいかどうかわかりませんが、"//?/" あるいは "//./" で始まるもの)まで含めて適切に取り扱えているコードはほぼありません。
そこで、(({dirname}))、(({basename}))、(({extname})) などから類推して、(({rootname})) というメソッドを (({File})) の特異メソッドおよび (({Pathname})) のメソッドとして追加することを提案します。
--- File.rootname(filename) -> String
filename のうち、ルートディレクトリあるいはそれに相当する部分を文字列として返します。
filename が相対パスなどの場合は ""(空文字列)を返します。
# on Unixen
p File.rootname("/foo/bar.txt") #=> "/" (absolute path)
p File.rootname("bar.txt") #=> "" (relative path)
# on Windows
p File.rootname("/foo/bar.txt") #=> "" (relative path)
p File.rootname("bar.txt") #=> "" (relative path)
p File.rootname("C:/foo/bar.txt") #=> "C:/" (normal absolute path)
p File.rootname("C:bar.txt") #=> "" (relative path)
p File.rootname("//host/share/baz.txt") #=> "//host/share" (UNC absolute path)
p File.rootname("//?/C:/foo/bar.txt") #=> "//?/C:/" (extended form absolute path)
--- Pathname#rootname
Pathname.new(File.rootname(self.to_s)) と同じです。
=end
--
http://bugs.ruby-lang.org/