bundlerによるgemの管理
2013/11/27 00:18 tags: bundle, middleman, ツイート昨日書いたmiddlemanの導入の記事を見た友人から、
「gemをbundleで管理してないの?」
という話をされ、
「だってわざわざ"bundle exec"とかつけるのめんどくさいじゃんヾ(・д・` )」
と返したのですが、せっかくブログから生まれた話だし、やってみるかー。
ということで、やってみました。
対象者
- コマンドラインに慣れてる
- rubyをPC(Mac)にインストールできる
- gemで何かしらをインストールしたことある
- bundle installコマンドをわけわからずでも打ったことがある
実施環境
- mac(Mountain Lion)
- ruby(2.0.0p247)
bundlerとは
完全に憶測で書くので間違ってたらしれっと直すかもですが。。
bundleとはgemをPCに依存せずプロジェクト毎に管理できるツールです。。
例えば、あるrailsプロジェクトがあったとして、一つは4.0系一つは3.2系を使っていたとします。
リポジトリ管理されており、同じPC内で違うバージョンのプロジェクトをどう扱えばいいか?
そんな時にbundleが便利なようです(想像で書いてます)
あとは、共同開発しててAさんとBさんで入ってるgemのバージョンが違うとかかな。
こっちのほうがよくありそう。
bundlerのインストール
terminal
1 | $ gem install bundler |
これだけでOK
さすがに、gemを管理するのにbundlerは入れないと動かないです。
bundle initしてみる
プロジェクトのディレクトリを作って、とりあえずbundle initしてみましょう。
terminal
1 2 3 4 | $ mkdir project $ cd project $ bundle init Writing new Gemfile to /Users/amasoktest3/Gemfile |
するとGemfileファイルが出来上がると思います。
Gemfile
1 2 3 4 | # A sample Gemfile source "https://rubygems.org" # gem "rails" |
今はせっかくmiddlemanをやってるので、middlemanをインストールしてみましょう。
Gemfile
1 2 3 4 | # A sample Gemfile source "https://rubygems.org" gem "middleman" |
上記のように変更して、
terminal
1 | $ bundle install --path vendor/boudle |
上記コマンドでmiddlemanがインストールされます。
また、middlemanに必要な関連ファイルもすべてインストールされます。
それらはすべて、vendor/bundle配下に格納されています。
しかし、vendor/bundle配下はパスが通っていません。どう使うか?
(パスを通すって何?って人は別で調べてください。)
そこで、一番はじめに書いた"bundle exec"が登場します。
terminal
1 | $ bundle exec middleman init . |
“init ."のドットはカレントディレクトリをさします。 今回でいうところの"project"です。
後はmiddlemanコマンドの前に"bundle exec"を全部つければ middlemanの導入と同じにすればいいです。
また、rubyをrbenvでインストールしている方は"binstubs"てのを使って煩わしい"bundle exec"を省略できちゃうみたいです。
試してみてうまくいきそうなら、また別記事で書きます。