この記事はアピリッツの技術ブログ「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.rbをrequireしてからhoge.rbを実行してくれます。
何らかの理由で、hoge.rbにはrequireを書きたくない場合なんかに便利ですね。
意外と知っていそうで使っていないコマンドライン引数についてのお話でした。
続いて、環境変数についても解説しましょう。
環境変数について
デフォルトオプションを設定する( RUBYOPT 変数 )
上記で解説してきたコマンドライン引数を、いちいち入力しなくても
デフォルトで指定してくれるという便利な環境変数です。
Windowsの場合
マイコンピュータを右クリックし、プロパティの環境変数を開きます。
そして、システムの環境変数に以下の変数名、変数値を指定してみましょう。変数名 「RUBYOPT」
変数値 「-Ks」
こうする事で、Rubyインタプリタは常に文字コード「Shift-JIS」として実行してくれます。
RUBYOPTには複数の引数が指定できるのでこんな記述もできます。変数名 「RUBYOPT」
変数値 「-Ks -rkconv -rubygems」
上記の例では、「文字コードはShift-JIS、kconvとRubyGemsをrequireしてからRubyを実行する」という内容にです。
これで、$ ruby hoge.rb
と実行するだけで、$ ruby -Ks -rkconv -rubygems
と実行しているのと同じことになります。
Linux環境の場合
ちなみに、bash環境の場合は.bashrcにRUBYOPT変数を記述すると良いでしょう。
.bashrc RUBYOPT=’-Ke -rkconv -rubygems’
export RUBYOPT
こんな感じになります。
ロードパスを追加( RUBYLIB 変数 )
標準のlib/以外の場所からもライブラリを探索するように指定できます。
Windowsの場合
環境変数に次のように指定します。変数名 「RUBYLIB」
変数値 「C:\mylib\ruby」
こうすることで、標準のlib/以外にC:\mylib\rubyからもライブラリの
探索を行うようになります。
独自に作ったライブラリをC:\mylib\rubyにfuga.rbと置いておくと
require ‘fuga’と指定するだけで、C:\mylib\rubyからも参照してくれます。
Linux環境の場合
bash環境の場合は、.bashrcにRUBYLIB変数を記述すると良いでしょう。
.bashrcRUBYLIB=$HOME/lib/ruby
export RUBYLIB
おまけ:RubyGemsのパスを指定する( GEM_HOME 変数 )
Ruby標準ではないのですが、Ruby1.9.1では標準搭載になる方向ですし、
Rubyで何かを作る際にはかならずお世話になるので覚えておいて損はありません。
Windwosの場合
環境変数に次のように指定します。変数名 「GEM_HOME」
変数値 「C:\ruby\lib\gems\1.8\」
これを指定することで、RubyGemsはC:\ruby\lib\gems\1.8\からGemを
参照してくれます。
Linuxの場合
bash環境の場合は、.bashrcにGEM_HOME変数を記述すると良いでしょう。
.bashrcGEM_HOME=/usr/local/lib/ruby/gems/1.8/
export GEM_HOME
Windows環境の場合についてですが、RubyForgeで配布されている
One-Click Installerを使うとGEM_HOME変数も設定してくれるようです。
なので、One-Click Installerを使っている場合は特に必要はありません。
知らなくても不自由はしないけど、知っていると得をする。
今回はそんな豆知識の紹介でした。