rake icon indicating copy to clipboard operation
rake copied to clipboard

Pathname#pathmap is still (erronously) documented

Open jasonkarns opened this issue 5 years ago • 3 comments

The rake docs here still indicate that Pathname#pathmap exists. However, it was removed by #130

It would be easy enough to fix the docs. But perhaps a different question is, why was this removed from Pathname?

I expected the following to work, but instead got NoMethodError: undefined method 'pathmap' for #<Pathname

array_of_pathnames.each do |p|
  directory p.pathmap('%d')
end

Surely it's easy enough to use directory p.dirname. However, I have a lambda that is also used as a rule dep (to ensure the parent directories are created). I was hoping to use the same lambda when iterating over the array_of_pathnames.

dirname = ->(f) { f.pathmap('%d') }

pathnames.map(&dirname).map(&method(:directory))

rule %r{pattern} => dirname do |t|
  # stuff
end

As long as we're extending String, I'd expect the same extensions to work on the "more domain appropriate" Pathname.

jasonkarns avatar Apr 17 '20 22:04 jasonkarns

I'm not sure why it's still exists. It was removed from the current top page that is https://ruby.github.io/rake/index.html .

hsbt avatar Jul 06 '21 06:07 hsbt

restore pathmap extension please. At least have it available to load 'require "rake/ext/pathmap"

dsisnero avatar Nov 03 '21 16:11 dsisnero

@hsbt Is there any discussion thread on why the pathmap extension was removed from Pathname?

I could understand if the eventual goal is to remove it from String as well. Though as long as String has it, I'd expect Pathname to have it as well? If the eventual goal is to remove the extensions entirely (or perhaps make them opt-in?) should it be removed from both String and Pathname at the same time so the interfaces remain consistent?

jasonkarns avatar Oct 31 '22 13:10 jasonkarns