雑記

インフラのことだったりプログラムのことだったりどうでもいいこと書いたり。要は雑記。

Rubyで特定のディレクトリ以下のファイルを一括requireする

タイトル通り、特定のディレクトリ以下にあるファイルを一括でrequireする方法

ディレクトリ構成

├── libs
│   ├── hoge.rb
│   └── piyo.rb
└── run.rb

上記のlibs以下を読み込んでみる。

コード

module Test
  class Hoge
    def output()
      puts 'hoge'
    end
  end
end
  • piyo.rb
module Test
  class Piyo
    def output()
      puts 'piyo'
    end
  end
end
  • run.rb
#!/usr/bin/env ruby
basedir = File.dirname __FILE__
$: << File.expand_path(basedir + "/libs")

Dir::glob(basedir + '/libs/*.rb').each do |f|
  require File::basename f, '.rb'
end

hogehoge = Test::Hoge.new()
piyopiyo = Test::Piyo.new()

hogehoge.output
piyopiyo.output

結果

% ruby run.rb
hoge
piyo

実際使うときは例外もちゃんと考える必要あり。