File path helpers build paths and extract useful pieces such as basename and extension.

path helper Path helper methods work with path strings without needing the file to exist.

Path Operations

filename
path_operations.rb
Replay: real traced execution (multi-file project)
filename = "report.txt"
directory = "docs"

path = File.join(directory, filename)
base = File.basename path
extension = File.extname path
name_without_extension = File.basename path, extension

puts "path=#{path}"
puts "base=#{base}"
puts "extension=#{extension}"
puts "name=#{name_without_extension}"
filename = "image.png"
directory = "docs"

path = File.join(directory, filename)
base = File.basename path
extension = File.extname path
name_without_extension = File.basename path, extension

puts "path=#{path}"
puts "base=#{base}"
puts "extension=#{extension}"
puts "name=#{name_without_extension}"
filename = "archive.tar"
directory = "docs"

path = File.join(directory, filename)
base = File.basename path
extension = File.extname path
name_without_extension = File.basename path, extension

puts "path=#{path}"
puts "base=#{base}"
puts "extension=#{extension}"
puts "name=#{name_without_extension}"
  1. filename ← report.txt, directory ← docs, path ← docs/report.txt

    1filename→ report.txt = "report.txt"  #@filename="image.png", "archive.tar"2directory→ docs = "docs"34path→ docs/report.txt = File.join(directory, filename)docs/report.txt5base→ report.txt = File.basename pathreport.txt6extension→ .txt = File.extname path.txt7name_without_extension→ report = File.basename path, extensionreport89puts "path=#{pathdocs/report.txt}"10puts "base=#{basereport.txt}"11puts "extension=#{extension.txt}"12puts "name=#{name_without_extensionreport}"
    outputpath=docs/report.txt
    base=report.txt
    extension=.txt
    name=report
  1. filename ← image.png, directory ← docs, path ← docs/image.png

    1filename→ image.png = "image.png"2directory→ docs = "docs"34path→ docs/image.png = File.join(directory, filename)docs/image.png5base→ image.png = File.basename pathimage.png6extension→ .png = File.extname path.png7name_without_extension→ image = File.basename path, extensionimage89puts "path=#{pathdocs/image.png}"10puts "base=#{baseimage.png}"11puts "extension=#{extension.png}"12puts "name=#{name_without_extensionimage}"
    outputpath=docs/image.png
    base=image.png
    extension=.png
    name=image
  1. filename ← archive.tar, directory ← docs, path ← docs/archive.tar

    1filename→ archive.tar = "archive.tar"2directory→ docs = "docs"34path→ docs/archive.tar = File.join(directory, filename)docs/archive.tar5base→ archive.tar = File.basename patharchive.tar6extension→ .tar = File.extname path.tar7name_without_extension→ archive = File.basename path, extensionarchive89puts "path=#{pathdocs/archive.tar}"10puts "base=#{basearchive.tar}"11puts "extension=#{extension.tar}"12puts "name=#{name_without_extensionarchive}"
    outputpath=docs/archive.tar
    base=archive.tar
    extension=.tar
    name=archive