Rubyでディレクトリ内のファイル名を取得

DirクラスかPathnameクラスを使用すると取得できる

Dir.glob(pattern)

Dir.glob("RAILS_ROOT/public/stylesheets/*.css")

Pathname.glob(pattern)

Pathname.glob("RAILS_ROOT/public/stylesheets/*.css")

stylesheetsにあるcssファイルを取得してる

DirとPathnameの違い

文法的には対して変わらないのだけど返ってくる結果の型が違う

  • Dirは文字列の配列
  • PathnameはPathnameオブジェクトの配列

ワイルドカード指定

例えばstylesheets以下のディレクトリにあるcssも取得したい

Dir.glob("RAILS_ROOT/public/stylesheets/**/*.css")

ワイルドカード

* 空文字を含む任意の文字列
? 任意の一文字
[] 括弧内のいずれかの文字
{} カンマで区切られた文字列の組み合わせ
/** /*の0回以上の繰り返し(ディレクトリ)
  • /stylesheets
    • style.css
    • /admin
      • admin.css
    • /layout
      • layout.css

みたいなファイル構成で全てのcssファイル名を取得したい時とか