Tbpgr Blog

Employee Experience Engineer tbpgr(てぃーびー) のブログ

Ruby | Pathnameで相対パスを取得する

概要

Pathnameで相対パスを取得する

詳細

Pathnameで相対パスを取得します。

サンプル

構成
$ tree
└─main
    │  hoge1.txt
    │  hoge2.txt
    │
    └─sub
            hoge1.txt
            hoge2.txt
コード
# encoding: utf-8
require 'pathname'

def show_path(base)
  Dir.glob('**/*.txt') do |f|
    path = Pathname.new(File.absolute_path(f))
    _filename = Pathname.new(path).relative_path_from(base)
    p _filename.to_s
  end
end

def get_base
  Pathname.new(File.absolute_path(Dir.pwd))
end

show_path(get_base)
puts "----------------------"
Dir.chdir('main')
show_path(get_base)
出力
"main/hoge1.txt"
"main/hoge2.txt"
"main/sub/hoge1.txt"
"main/sub/hoge2.txt"
----------------------
"hoge1.txt"
"hoge2.txt"
"sub/hoge1.txt"
"sub/hoge2.txt"