RubyGemのソースを読む(設定編)
前書き
- 結構自分は、オープンソースのプロダクトから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 [email protected]: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が開かれるはずです
$ gem which bundler
/usr/local/ruby/gems/1.9.1/gems/bundler-1.3.5/lib/bundler.rb
/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)
- 以下のコマンドを設定することで、
vendor/bundle
配下に - 試しに、自分のdjango というリポジトリを適当な所にcloneしてきましょう。
$ git clone [email protected]: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が開かれるはずです
bundle open
コマンドでリポジトリ内のgemを探しに言ってくれます(別記事に具体的なやり方を説明します)$ vim $HOME/.bashrc
$HOME/.bashrc
export EDITOR='vim'
$ source $HOME/.bashrc
$ cd /path/to/django
$ bundle open unicorn
- このようにunicornのソースを見たりすることが出来ます。
今回の諸々の設定のメリット
- 何かloggerとか挟んで動かなくなった時にガンガンrm
vendor
して、bundle install
してガンガンソースを読むことが出来ます。
See Also
vendor
して、bundle install
してガンガンソースを読むことが出来ます。あくまで今回はコードリーディングの手段としてのbundlerの使い方を解説しましたが、正攻法のbundlerは以下のようなものかな、と思っています。
Ruby書くならBundler使え
http://shokai.org/blog/archives/7262
Author And Source
この問題について(RubyGemのソースを読む(設定編)), 我々は、より多くの情報をここで見つけました https://qiita.com/r-fujiwara/items/faf643d6e8abf36cdff5著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .