Rubyにおけるロードパス(require)のtips

    基本的なことかもしれないけれども、基本すらできないので、Rubyのrequireについてしらべたことをまとめ。

    requireとは

    requireとは、ロードパスからファイルを探してきて自分のコードに取り込む仕組み。

    requireの他にも、loadというものもある。両者の違いは別記事で以前まとめた。

    たとえば、同一ディレクトリにあるhogehogeを自分のコードに取り込みたいときは、以下のようにつかう。

    
    # requireを使う場合
    requier './hogehoge'
    

    require_relativeを使う場合

    requirerelative ‘hogehoge’


    requireは、LOADPATHが通ったところをロードするため、カレントディレクトリのファイルをロードするためには、ドットをうつ。


    require_relative相対パスでパスを指定できる。


    余談で、rspecは実行時にlibとspecのディレクトリがロードパスに追加される。

    相対パスがかっこ悪いのでなんとかする

    個人的には、相対パスがかっこ悪いので、何とかしたい。

    コード中でLOAD_PATHにカレントディレクトリを追加

    以下の処理を書くと、コード実行時にLOAD_PATHに自分のディレクトリを追加できる。

    
    # 簡易版
    $:.unshift File.dirname(__FILE__)
    

    自分でパスを追加したい場合

    $:.unshift(File.dirname(File.expand_path(FILE)) + ‘起動したプログラムからの相対パス’)

    ruby起動時にLOAD_PATHにディレクトリを追加

    ruby -I (ディレクトリ)でもパスを追加できる。起動用のシェルやbatを作成するといいかも。

    
    #!/bin/bash
    

    currentdir=dirname $0 cd ${currentdir}

    ruby -I ./lib $@