Project

General

Profile

Actions

Bug #1297

closed

Pathname#subの挙動について

Added by kakutani (Shintaro KAKUTANI) over 15 years ago. Updated about 5 years ago.

Status:
Closed
Target version:
-
ruby -v:
ruby 1.9.1p0 (2009-01-30) [i386-darwin9.6.0]
[ruby-dev:38173]

Description

=begin
かくたにです。

Pathname#subを使って、ファイルパスからファイル名っぽいものを
抜きだそうとしたらうまくいきませんでした。

http://gist.github.com/80263
$ ruby191 -rpathname -ve '
path = "/Users/home/moro/work/xxx/spec/fixtures/me.png"
re = /^.*#{File::SEPARATOR}([^#{File::SEPARATOR}]+)$/
p Pathname.new(path).sub(re){ $1 } # => #Pathname:
p Pathname.new( Pathname.new(path).instance_variable_get("@path").dup.sub(re){ $1 } ) # => #Pathname:me.png'
ruby 1.9.1p0 (2009-01-30) [i386-darwin9.6.0]
#Pathname:
#Pathname:me.png

1.8.7でも同様です(というか最初は1.8.7で遭遇)。

$ ruby187 -rpathname -ve '
path = "/Users/home/moro/work/xxx/spec/fixtures/me.png"
re = /^.*#{File::SEPARATOR}([^#{File::SEPARATOR}]+)$/
p Pathname.new(path).sub(re){ $1 } # => #Pathname:
p Pathname.new( Pathname.new(path).instance_variable_get("@path").dup.sub(re){ $1 } ) # => #Pathname:me.png'
ruby 1.8.7 (2008-08-11 patchlevel 72) [i686-darwin9]
#Pathname:
#Pathname:me.png

これは、Rails2.3を使ったアプリケーションでファイルアップロードのテストを書いていて、
http://github.com/rails/rails/blob/18eb80ccc7e932f9a6c00462ceaeea648631b120/actionpack/lib/action_controller/test_process.rb
の、368行目で遭遇しました。

@original_filename = path.sub(/^.*#{File::SEPARATOR}([^#{File::SEPARATOR}]+)$/) { $1 }

ここのpathがPathnameのインスタンスだとマッチしません(Stringだとマッチする)。

使う側の気持ちとしては、Pathname#subではファイルパスの文字列へのsubと同じ挙動であって欲しいと思いました。

余談:
Rails.rootがRails 2.3からPathnameを返すようになっていて(以前はStringだった)、
うっかりRails.root.join("spec", "fixtures", "vacation.jpg") と書いて失敗しました。
そんなの聞いてなかったよ……。
=end

Actions #1

Updated by akr (Akira Tanaka) over 15 years ago

  • Status changed from Open to Closed
  • % Done changed from 0 to 100

=begin
Applied in changeset r22987.
=end

Actions #2

Updated by shyouhei (Shyouhei Urabe) over 15 years ago

  • Status changed from Closed to Open
  • Assignee set to shyouhei (Shyouhei Urabe)

=begin

=end

Actions #3

Updated by shyouhei (Shyouhei Urabe) over 15 years ago

  • Assignee changed from shyouhei (Shyouhei Urabe) to wyhaines (Kirk Haines)

=begin

=end

Actions #4

Updated by shyouhei (Shyouhei Urabe) about 14 years ago

  • Status changed from Open to Assigned

=begin

=end

Actions #5

Updated by jeremyevans0 (Jeremy Evans) about 5 years ago

  • Tracker changed from Backport to Bug
  • Project changed from Backport186 to Ruby master
  • Description updated (diff)
  • Status changed from Assigned to Closed
  • ruby -v set to ruby 1.9.1p0 (2009-01-30) [i386-darwin9.6.0]
  • Backport set to 2.5: UNKNOWN, 2.6: UNKNOWN
Actions

Also available in: Atom PDF

Like0
Like0Like0Like0Like0Like0