¿Cómo obtener Ruby Dir#glob para devolver basenames, no absolute_paths?
absolute-path (2)
FakeProfilePictures::Photo.all_large_names_2x
(definido a continuación) devuelve una matriz de nombres de rutas absolutas, pero cuando hago Dir["picture_*@2x.*"]
Desde el directorio correcto en irb
, obtengo los basenames (lo que quiero) . ¿Cuál es la mejor manera de obtener los nombres básicos? Sé que podría hacerlo agregando .map { |f| File.basename(f) }
.map { |f| File.basename(f) }
como se muestra en el comentario, pero ¿hay alguna manera más fácil / mejor / más rápida / más fuerte ?
module FakeProfilePictures
class Photo
DIR = File.expand_path(File.join(File.dirname(__FILE__), "photos"))
# ...
def self.all_large_names_2x
@@all_large_names_2x ||= Dir[File.join(DIR, "picture_*@2x.*")] # .map { |f| File.basename(f) }
end
end
end
Podrías entrar en DIR
antes de englobar, pero simplemente correría todo a través del basename
.
Tu puedes hacer
Dir.chdir(DIR) do
Dir["picture_*@2x.*"]
end
después del bloque, se restaura el directorio original.