積極的にメモっていく姿勢

題名詐欺。更新頻度の低さが売り。

MacでRubyの環境を整えたんだ

お久しぶりです。

サークルでRubyの勉強をちまりちまりと始めました。
はてぶもRubyが増えて参りましたが、まだ慣れません。

Pythonが長かったというのもあって、Pythonの記法で書いてミスる事が多いですね。

こちらの学習環境は以下の通りです。

OS : Mac OS X Mountain Lion 64bit
editor : vim

Rubyのバージョンは以下のようにして確認します。

$ ruby --version
ruby 1.9.3p194 (2012-04-20 revision 35410) [x86_64-darwin12.2.0]

当面はコマンドライン上でお遊びとなるでしょう。

知識の浅い富雄さん「あーこれでruby勉強できるわー」

0. 準備したときの話

さてここで、最初の状態を確認してみましょう。

$ ruby --version
ruby 1.8.7 (2012-02-08 patchlevel 358) [universal-darwin12.0]

当時でも最新じゃなかったので、とりあえず homebrew で ruby の最新版を入れる事に。

$ brew install ruby

これでおk。最新版がするすると入っていきます。

$ ruby --version
ruby 1.8.7 (2012-02-08 patchlevel 358) [universal-darwin12.0]

知識の浅い富雄さん「さっきhomebrewで入れたのに! 何でバージョン新しくなってないの!?」

環境はそんなに簡単に整いません。さて、こっからが本題です。

1. homebrewで管理されている場合

OSがMacだったら、macportsかhomebrewかそこらで管理されていると思います。
homebrewで入れたものがどこに行くのか、わからなかったので調べました。

/usr/local/Cellar/

どうやら homebrew を使って入れたものはここに入っているようです。

つまり、homebrewで入れたrubyはここに。

/usr/local/Cellar/ruby/1.9.3-p194/bin/ruby

さて一方、rubyというコマンドはどこにいるのでしょう。

$ which ruby
/usr/bin/ruby

はい余裕で違うーーーー

自動的にここに ruby の alias が振り直される訳ではないですね。

そして、Macでデフォルト状態なので bash です。
csh でも tcsh でもないので rehash などと言うコマンドもありません。

ということで、自分で alias を振る事にしました。

2. bashrcを書けばいいのね

知識の浅い富雄さん「.bashrc 書いて source ~/.bashrc すれば余裕だーーーー」

.bashrcの内容はこんな感じ。

alias ruby='/usr/local/Cellar/ruby/1.9.3-p194/bin/ruby'

これだけでいいよ。とりあえず ruby のバージョンさえ変われば。
という感じ丸見え。

$ source ~/.bashrc

これで、再読み込みも完了したし余裕ですな。という雑な感じ。

$ ruby --version
ruby 1.9.3p194 (2012-04-20 revision 35410) [x86_64-darwin12.2.0]

よしよし。これで勉強始められるじゃないか。

3. 再起動しました

知ったかぶりの富雄さん「今日もRuby研の課題やろう。あ」

vim 上で : を押し、上キーを連打してしまった富雄さんはこんな事に気付くのです。

$ ruby --version
ruby 1.8.7 (2012-02-08 patchlevel 358) [universal-darwin12.0]

何故こんな事に。

もう一度、source コマンドに頼る富雄さん。
.bashrc がおかしいのだ。きっとそうに違いないのだ。

......違くない。

毎回 .bashrc を読みにいっていない様子。
ちょっと調べると、.bash_profile を書かねばならぬようです。

if [ -f ~/.bashrc ]; then
    . ~/.bashrc
fi

とりあえず、これで毎度 .bashrc を読みにいってくれるようです。

x. 最後に

既に、そこそこ回数をこなした後なので、まとめて bitbucket に放り込む事にしました。

tomio2480 / ruby_practice — Bitbucket

ちなみに、前回はライフゲームを書いてみようということだったので書いてみました。

tomio2480 / ruby_practice / source / rubyken / l07_lifegame.rb — Bitbucket

しかし、あってるのかどうなのか全くわからない......。
いいデバッグの方法とかあるんでしょうか......?