LoginSignup
20
20

More than 5 years have passed since last update.

RubyGemのソースを読む(設定編)

Last updated at Posted at 2016-01-13

前書き

  • 結構自分は、オープンソースのプロダクトからRubyの書き方を習得していることが多いです。
  • 本とか読むのは三秒で飽きる方でGithubのdefunktも何かのインタビューでそんなこと言ってました。
  • ソースを読む手段もまぁまぁ筋が良いやり方があると思っており、そのRubyの設定を解説します(実践編はまた解説します。)
  • また DHH もソースをガンガン読めと言っています

dhh.png
- リンク

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.gif

  • このようにunicornのソースを見たりすることが出来ます。

今回の諸々の設定のメリット

  • 何かloggerとか挟んで動かなくなった時にガンガンrm vendorして、bundle install してガンガンソースを読むことが出来ます。

See Also

あくまで今回はコードリーディングの手段としてのbundlerの使い方を解説しましたが、正攻法のbundlerは以下のようなものかな、と思っています。

Ruby書くならBundler使え
http://shokai.org/blog/archives/7262

20
20
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
20
20