その他
    ホーム 技術発信 DoRuby Rubyのコマンドライン引数と環境変数について(初心者向け)

    Rubyのコマンドライン引数と環境変数について(初心者向け)

    この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

    お久しぶりです!
    井上清晃(saronpasu)です。

    今回は、ぐぐっと敷居を下げて Rubyビギナー向けの内容でお送りします。
    Rubyのコマンドライン引数と環境変数について解説しようと思います。

    コマンドライン引数の紹介

    構文チェック( -c オプション)

    Rubyに慣れないうちはよくお世話になります。$ ruby -c hoge.rb

    このように実行すると、 hoge.rb内の構文チェックを行い、正常であれば

    “Syntax OK”

    と返してくれます。

    文字コード宣言( -K オプション )

    Rubyを実行する際の実行環境の文字コードを宣言します。$ ruby -Ku hoge.rb 

    -K + 文字コード種類 と記述します。

    UTF-8なら 「-Ku」

    EUC-JPなら「-Ke」

    Shift-JISなら「-Ks」です。 

    これは、UTF-8で書かれたRubyスクリプトをWindowsで実行する場合には役に立ちます。

    デバッグモードで実行( -d オプション )

    $DEBUGというグローバル変数をTRUEにします。$ ruby -d hoge.rb

    これを使う事で、 if $DEBUG then ~~ endとあるような箇所を実行する

    デバッグモードで実行してくれます。

    引数で実行しちゃう( -e オプション )

    引数に書かれたコードをRubyスクリプトとして実行してくれます。$ ruby -e “print(‘Hello, World’)”

    これを使う事で、Rubyでワンライナーが実行できます。

    実行するディレクトリを指定( -C オプション )

    特定のディレクトリにあるファイルに対して何かを実行する場合に便利です。$ ruby -C/home/user/document/ hoge.rb

    この場合、/home/user/document/ ディレクトリに移動してから

    hoge.rbを実行します。

    例えば、スクリプト内で相対パスにあるファイルを読み書きするような

    コードを書いている場合なんかは、このオプションが効果を発揮します。

    cronを書くときにもいいかも!

    ロードパスを指定して実行( -I オプション )

    特定のディレクトリからrequireするように指定できます。$ ruby -I/home/user/lib/ruby/ hoge.rb

    この場合、/home/user/lib/ruby/ ディレクトリが$LOAD_PATHに追加されます。

    こうすることで何ができるのかというと、hoge.rbの中で

    require ‘fuga’

    と書かれていた場合に/home/user/lib/ruby/ も参照してくれます。

    Rubyのlib/ディレクトリには入れたくはないけど、ライブラリとして他の

    ディレクトリを指定したいという場合なんかには便利ですね。

    require ‘/home/user/lib/ruby/fuga’

    と書くよりは、

    require ‘fuga’

    と書いた方が断然シンプルで分かり易いですね。

    requireしてから実行する( -r  オプション)

    特定のファイルをrequireしてから実行してくれます。$ ruby -rkconv hoge.rb

    と実行すると、 kconv.rbrequireしてからhoge.rbを実行してくれます。

    何らかの理由で、hoge.rbにはrequireを書きたくない場合なんかに便利ですね。 

    意外と知っていそうで使っていないコマンドライン引数についてのお話でした。

    続いて、環境変数についても解説しましょう。

    環境変数について 

    デフォルトオプションを設定する( RUBYOPT 変数 )

    上記で解説してきたコマンドライン引数を、いちいち入力しなくても

    デフォルトで指定してくれるという便利な環境変数です。

    Windowsの場合

    マイコンピュータを右クリックし、プロパティの環境変数を開きます。

    そして、システムの環境変数に以下の変数名、変数値を指定してみましょう。変数名 「RUBYOPT」
    変数値 「-Ks」

    こうする事で、Rubyインタプリタは常に文字コード「Shift-JIS」として実行してくれます。

    RUBYOPTには複数の引数が指定できるのでこんな記述もできます。変数名 「RUBYOPT」
    変数値 「-Ks -rkconv -rubygems」

    上記の例では、「文字コードはShift-JIS、kconvRubyGemsrequireしてからRubyを実行する」という内容にです。

    これで、$ ruby hoge.rb

    と実行するだけで、$ ruby -Ks -rkconv -rubygems

    と実行しているのと同じことになります。

    Linux環境の場合 

    ちなみに、bash環境の場合は.bashrcRUBYOPT変数を記述すると良いでしょう。

    .bashrc RUBYOPT=’-Ke -rkconv -rubygems’
    export RUBYOPT

    こんな感じになります。

    ロードパスを追加( RUBYLIB 変数 )

    標準のlib/以外の場所からもライブラリを探索するように指定できます。

    Windowsの場合

    環境変数に次のように指定します。変数名 「RUBYLIB」
    変数値 「C:\mylib\ruby」

    こうすることで、標準のlib/以外にC:\mylib\rubyからもライブラリの

    探索を行うようになります。

    独自に作ったライブラリをC:\mylib\rubyfuga.rbと置いておくと

    require ‘fuga’と指定するだけで、C:\mylib\rubyからも参照してくれます。

    Linux環境の場合

    bash環境の場合は、.bashrcRUBYLIB変数を記述すると良いでしょう。

    .bashrcRUBYLIB=$HOME/lib/ruby
    export RUBYLIB

    おまけ:RubyGemsのパスを指定する( GEM_HOME 変数 )

    Ruby標準ではないのですが、Ruby1.9.1では標準搭載になる方向ですし、

    Rubyで何かを作る際にはかならずお世話になるので覚えておいて損はありません。

    Windwosの場合

    環境変数に次のように指定します。変数名 「GEM_HOME」
    変数値 「C:\ruby\lib\gems\1.8\」

    これを指定することで、RubyGemsC:\ruby\lib\gems\1.8\からGem

    参照してくれます。

    Linuxの場合

    bash環境の場合は、.bashrcGEM_HOME変数を記述すると良いでしょう。

    .bashrcGEM_HOME=/usr/local/lib/ruby/gems/1.8/
    export GEM_HOME

    Windows環境の場合についてですが、RubyForgeで配布されている

    One-Click Installerを使うとGEM_HOME変数も設定してくれるようです。

    なので、One-Click Installerを使っている場合は特に必要はありません。

    知らなくても不自由はしないけど、知っていると得をする。

    今回はそんな豆知識の紹介でした。