前書き
- 結構自分は、オープンソースのプロダクトからRubyの書き方を習得していることが多いです。
- 本とか読むのは三秒で飽きる方でGithubのdefunktも何かのインタビューでそんなこと言ってました。
- ソースを読む手段もまぁまぁ筋が良いやり方があると思っており、そのRubyの設定を解説します(実践編はまた解説します。)
- また DHH もソースをガンガン読めと言っています
rbenvとbundlerを入れる
- rbenvのインストールは、他の記事に譲るとして、重要なのはbundlerです
ダメな例
- これはシステムの方のbundlerを読みに言ってしまっています。
$ gem which bundler
/usr/local/ruby/gems/1.9.1/gems/bundler-1.3.5/lib/bundler.rb
良い例
- rbenv配下(
/usr/local/rbenv
)にあるので、これはrbenv配下にライブラリがインストールされています。
$ gem which bundler
/usr/local/rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/bundler-1.10.6/lib/bundler.rb
- また何か変だな、と思ったら、
rbenv versions
で現状使っているrubyのバージョンを読むことが出来ます(以下では、2.2.2を利用しています)
$ rbenv versions
system
2.2.0
* 2.2.2 (set by /usr/local/rbenv/version)
リポジトリ内に gem を落としてくる
- 以下のコマンドを設定することで、
vendor/bundle
配下に - 試しに、自分のdjango というリポジトリを適当な所にcloneしてきましょう。
$ git clone git@github.com:r-fujiwara/django.git
$ cd django
- ここまで出来たら以下のコマンドを実行しましょう
$ bundle install --path vendor/bundle
- 要は
/path/to/django/vendor
配下に全てのGemを落としてくれるというコマンドです。
ここまで出来たら
- 以下で
ls
すると、以下のようになっていますが、
$ cd /path/to/django
$ ls
Gemfile Gemfile.lock README.md config config.ru log tmp views
- 次の状態で、
bundle install
を走らせると、ls
した時に結果が変わっています(vendor
配下が変わっていますね)。
$ cd /path/to/django
$ ls
Gemfile Gemfile.lock README.md config config.ru log tmp vendor views
export EDITOR の設定
何故これを行うか?
-
bundle open
コマンドでリポジトリ内のgemを探しに言ってくれます(別記事に具体的なやり方を説明します)
手順
- bashなりの
$ vim $HOME/.bashrc
- 以下を追記します。
$HOME/.bashrc
export EDITOR='vim'
$ source $HOME/.bashrc
$ cd /path/to/django
$ bundle open unicorn
- すると、以下のようにunicornが開かれるはずです
- このようにunicornのソースを見たりすることが出来ます。
今回の諸々の設定のメリット
- 何かloggerとか挟んで動かなくなった時にガンガンrm
vendor
して、bundle install
してガンガンソースを読むことが出来ます。
See Also
あくまで今回はコードリーディングの手段としてのbundlerの使い方を解説しましたが、正攻法のbundlerは以下のようなものかな、と思っています。
Ruby書くならBundler使え
http://shokai.org/blog/archives/7262