ruby - ライブラリ - File クラス

 
1. 概要
2. 実行中のモジュールのパスを調べる
3. 実行中のモジュールに実行時のパスを追加する

1. 概要

 もともとはパスを調べたり、インクルードパスを追加する機能が欲しかっただけ・・・。  結局は File クラスというものを使うのでした。  一連のモジュールを作成しているときに、定義ファイルを読みこむ仕組みは作成したものの。  実行中のモジュールのパスに置いておくようにしたのですが、実行するたびにそのモジュールのパスまで移動しなければならないのが面倒くさい。  調べてみるとできそうだったのでやってみます。  本項は、以下のサイトを参考にさせていただきました。
class File (Ruby 2.5.0)」
「Rubyで実行ファイルの名前を取得する ( *.rb と exerb 後の *.exe ) - YNote」
「ディレクトリ名の取得

2. 実行中のモジュールのパスを調べる

 実行時のモジュール名は $0 でとれるわけだな。  diranme メソッドの方が、わたしの目的に合っている。  てなわけで

/usr/home/hogehoge/lang/ruby/file/expand_path.rb
 というファイル名の下記のようなソースを書いて
#!/usr/bin/env ruby

puts("#{File.expand_path($0)}")
puts("#{File.dirname($0)}")


 実行すると下記の結果が得られます
/usr/home/hogehoge/lang/ruby/file/expand_path.rb
/usr/home/hogehoge/lang/ruby/file

3. 実行中のモジュールに実行時のパスを追加する

 と、前項までやってみましたが・・・。  あんまり見栄えがよろしくないなぁ・・・と。  で「Ruby - Ruby グローバル変数$LOAD_PATHにパスを追加したい|teratail」を読んで、実行時のパスを通すようにしてみました。  $LOAD_PATH という ruby の実行環境パスがあってそれに追加してやればいいらしい。

/usr/home/hogehoge/lang/ruby/file/path.rb
 というファイル名の下記のようなソースを書いて
#!/usr/bin/env ruby

puts("使用前")
puts("#{$LOAD_PATH}")

$LOAD_PATH << File.dirname(File.expand_path(__FILE__))

puts("使用後")
puts("#{$LOAD_PATH}")


 実行すると下記の結果が得られます
使用前
["/usr/local/lib/ruby/site_ruby/2.4", "/usr/local/lib/ruby/site_ruby/2.4/amd64-freebsd11", "/usr/local/lib/ruby/site_ruby", "/usr/local/lib/ruby/vendor_ruby/2.4", "/usr/local/lib/ruby/vendor_ruby/2.4/amd64-freebsd11", "/usr/local/lib/ruby/vendor_ruby", "/usr/local/lib/ruby/2.4", "/usr/local/lib/ruby/2.4/amd64-freebsd11"]
使用後
["/usr/local/lib/ruby/site_ruby/2.4", "/usr/local/lib/ruby/site_ruby/2.4/amd64-freebsd11", "/usr/local/lib/ruby/site_ruby", "/usr/local/lib/ruby/vendor_ruby/2.4", "/usr/local/lib/ruby/vendor_ruby/2.4/amd64-freebsd11", "/usr/local/lib/ruby/vendor_ruby", "/usr/local/lib/ruby/2.4", "/usr/local/lib/ruby/2.4/amd64-freebsd11", "/usr/home/hogehoge/lang/ruby/file"]