Ruby
開発環境

Ruby(Railsじゃない環境)でTDDで開発をするための環境構築 2012/8月版

More than 5 years have passed since last update.

2012/9/1のTDDBC横浜に向けて書いたものです。

間違ってるとか、古い、とかありましたら突っ込みください。


Rubyのインストール


Ubuntuの場合 (下にMacの場合を書いてます)

その他のディストリの場合は、頑張って読み替えてください。


関係するライブラリ、開発に必須なバージョン管理システムなどをインストールする

sudo apt-get install build-essential openssl libreadline6 libreadline6-dev curl git-core zlib1g zlib1g-dev libssl-dev libyaml-dev libxml2-dev libxslt-dev autoconf libc6-dev ncurses-dev automake libtool bison subversion

元々結構入ってるかもしれないけど、大体こんなもん。


rbenvとruby-buildをインストールする

rvmはオワコンという噂が流れてますので、rbenvを使います。

rvmはシェルを色々いじり過ぎって感じがちょっとマイナスポイントですね。

# 一般ユーザーで実行

$ cd
$ git clone git://github.com/sstephenson/rbenv.git .rbenv

ホームディレクトリに.rbenvが出来る。

# 一般ユーザーで実行

$ mkdir -p ~/.rbenv/plugins
$ cd ~/.rbenv/plugins
$ git clone git://github.com/sstephenson/ruby-build.git

.rbenv/plugins/ruby-buildが出来る。

.profile or .zshrcに以下の設定を記述する

export PATH=$HOME/.rbenv/bin

eval "$(rbenv init -)"

ここは使っているシェルやディストリによって多少変わる。

私自身は、.zshenvに記述していて、あちこち共通で使えるように多少工夫している。

この後、ターミナルを再起動して、シェルを読み込み直しておく。

$ rbenv help

を実行して、rbenvの使い方が出てきたらオッケー。


Rubyの最新安定版をインストールする。

$ CONFIGURE_OPTS="--enable-shared" rbenv install 1.9.3-p194

configureにオプションを渡したい場合は、CONFIGURE_OPTSに文字列を渡しておくと処理してくれる。


利用するRubyの切り替え

$ rbenv global 1.9.3-p194

$ ruby -v # -> ruby 1.9.3p194


Bundlerのインストール

Gem管理のためにbundlerをインストールする。

$ gem install bundler

$ rbenv rehash
$ rehash # zshを使ってる場合

rbenvでは、.rbenv/shims以下にある実行ファイルを呼び出して、

間接的に各バージョンのディレクトリにインストールされているコマンドを呼び出す仕組みになっている。

gem installによってコマンドが追加されても、.rbenv/shims以下にはコマンド呼び出しのための実行ファイルは自動で作成されない。

なので、コマンドが追加される類のgemをインストールした際は、都度rbenv rehashを実行する。


プロジェクトのディレクトリでBundlerを使う

これからコードを書くつもりのディレクトリに移動したら、以下のコマンドを実行する。

$ bundle init

カレントディレクトリにGemfileの雛形が作成される。

作成されたGemfileを以下のように編集する。

source "https://rubygems.org"

gem "rspec"
gem "guard-rspec"
gem "libnotify" # 通知が欲しい場合

その他、必要なGemがあれば適宜追記。

編集が終わったら以下のコマンドを実行する。

$ bundle install --path .bundle

環境全体に色々入れないように、path指定をしてそのディレクトリ内での利用に限定する。

特に環境全体へのインストールに抵抗が無ければ、bundle installのみでもOK。


自動テストの設定例

bundlerでディレクトリ内にGemをインストールしている前提。

$ bundle exec guard init rspec

カレントディレクトリにGuardfileが作成される。

細かい説明は省略しますが、watch対象のファイルが更新された時に、rspecを実行してくれます。

開発環境のディレクトリ構成によって変わりますが、

シンプルにそのディレクトリのルートで書く時は、以下の設定を頭に足しておくといいかなと思います。

watch(%r{^([^/]+).rb$}) { |m| "spec/#{m[1]}_spec.rb" }

hoge.rbを編集したら、spec/hoge_spec.rbが実行されるはずです。

手動で実行したい時は、以下のようにする。

$ bundle exec rspec spec/hoge_spec.rb

このあたりはディレクトリ構成や命名規則と関係するので、

慣れてきたらカスタマイズするのもいいかと思います。

参考: https://github.com/guard/guard


Macの場合

Xcodeとhomebrewのインストールが完了していることを前提。


homebrewでrbenv, ruby-build, readlineをインストールする

$ brew install rbenv ruby-build readline

$ brew link readline

git-nowもbrewで入るので、ついでに入れておくのもいいかもしれない。


Rubyの最新安定版をインストールする。

$ CONFIGURE_OPTS="--enable-shared --with-readline-dir=/usr/local" rbenv install 1.9.3-p194

Macのreadlineはシステムデフォルトのライブラリを使ってしまうと、

irbやpryで日本語が打てなくなるので、brewで入れたものを使うように指定しておく方がいい。

後の構築作業はほぼ共通だが、Gemfileは少し違う。

source "https://rubygems.org"

gem "rspec"
gem "guard-rspec"
gem "ruby_gntp" # 通知が欲しい場合


Windowsの場合

良く分かりませんw

RubyInstallerで1.9.3-p194が入るらしいので、後は運が良ければGemがインストール出来ると思います。