$LOAD_PATH
について調べていた時に、Rubyの標準ライブラリの
ディレクトリ構成の意味をわかっていない事にきづいたので、調べてみました。
$ ruby -e ‘puts $:’
$HOME/.anyenv/envs/rbenv/rbenv.d/exec/gem-rehash
$HOME/.anyenv/envs/rbenv/versions/2.2.0/lib/ruby/site_ruby/2.2.0
$HOME/.anyenv/envs/rbenv/versions/2.2.0/lib/ruby/site_ruby/2.2.0/x86_64-linux
$HOME/.anyenv/envs/rbenv/versions/2.2.0/lib/ruby/site_ruby
$HOME/.anyenv/envs/rbenv/versions/2.2.0/lib/ruby/vendor_ruby/2.2.0
$HOME/.anyenv/envs/rbenv/versions/2.2.0/lib/ruby/vendor_ruby/2.2.0/x86_64-linux
$HOME/.anyenv/envs/rbenv/versions/2.2.0/lib/ruby/vendor_ruby
$HOME/.anyenv/envs/rbenv/versions/2.2.0/lib/ruby/2.2.0
$HOME/.anyenv/envs/rbenv/versions/2.2.0/lib/ruby/2.2.0/x86_64-linux
大きくは4つの階層に分かれていて、以下のような構成になっています。
$ cd $HOME/.anyenv/envs/rbenv/versions/2.2.0/lib/ruby
$ tree -d -L 1
.
├── 2.2.0 # 標準ライブラリ
├── gems # gemファイルの置き場
├── site_ruby # ユーザのライブラリ置き場
└── vendor_ruby # ベンダー用のライブラリ
また、gems
ディレクトリ意外のディレクトリには、それぞれ環境依存のソースを置くディレクトリがあります。
※ 自分の環境はCentOSなので、x86_64-linux
という名前のディレクトリになっています。
$HOME/.anyenv/envs/rbenv/versions/2.2.0/lib/ruby/2.2.0
$HOME/.anyenv/envs/rbenv/versions/2.2.0/lib/ruby/2.2.0/x86_64-linux # soファイルなど、環境に依存したソース
$HOME/.anyenv/envs/rbenv/versions/2.2.0/lib/ruby/site_ruby
$HOME/.anyenv/envs/rbenv/versions/2.2.0/lib/ruby/site_ruby/2.2.0
$HOME/.anyenv/envs/rbenv/versions/2.2.0/lib/ruby/site_ruby/2.2.0/x86_64-linux # 環境依存
$HOME/.anyenv/envs/rbenv/versions/2.2.0/lib/ruby/vendor_ruby
$HOME/.anyenv/envs/rbenv/versions/2.2.0/lib/ruby/vendor_ruby/2.2.0
$HOME/.anyenv/envs/rbenv/versions/2.2.0/lib/ruby/vendor_ruby/2.2.0/x86_64-linux # 環境依存