ランプの中身(Ruby on Railsのシステム開発)
ランプの中身(Ruby on Railsのシステム開発)では、株式会社ケイビーエムジェイのRuby on Railsエンジニアが蓄積したノウハウを公開しています。Ruby on Railに関する技術解説や実践的なノウハウなど、開発現場の技術に則したコンテンツを随時追加していきます。 初心者の方でもわかりやすい技術解説を心がけています。リクエスト、ご質問も受け付けいますので、ご気軽にコメントを記述して下さい。

< Rubyのマニュアルを手軽に参照する方法... | メイン | Rubyのソースコードから HTML H... >

saronpasuの中身(ruby
2008.03.26

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


お久しぶりです!
井上清晃(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変数を記述すると良いでしょう。

.bashrc

RUBYLIB=$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変数を記述すると良いでしょう。

.bashrc

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

 

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

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

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

 

 

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

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

 

コメント (0)  |トラックバック (0)

ブックマークに追加する Subscribe with livedoor Reader あとで読む

トラックバック URL

この記事にコメントする

ニックネーム:
メールアドレス:
URL:


KBMJのWebソリューション
Ruby on Rails Summer Festival 2008開催決定!!

TOPICS

2008/06/25
ZD Net Builder」の連載記事です。第四回は「Rubyでどう書く?:重複したRSSをまとめる」が掲載されました。

2008/05/30
ZD Net Builder」の連載記事です。第三回は「Rubyでどう書く?:Rubyで特定URLの画像パス一覧を表示する」が掲載されました。

2008/05/07
ZD Net Builder」に連載を始めました。第二回は「Rubyでどう書く?:RubyでPDF履歴書を作成する」が掲載されました。

2008/04/24
アットマーク・アイティ」に『 Rubyを使ってPaSoRi経由でSuicaの乗車履歴を取得し、GoogleMapsやGoogleEarthで表示する』が掲載されました。

全体のRoR最新ブログ一覧

プロフィール

  • saronpasu
  • RubyやRuby on Railsで開発して行く上でのTipsや、トラブルにぶつかった際の解決方法なんかを公開して行きます。

ブログの購読

RSS

timelog
株式会社ケイビーエムジェイロゴ