Capstranoで自動化してる方 ハイっ!
(やり方だけ知りたい方は、この章飛ばしてくださいね!)
Capistranoでデプロイ自動化しているナウくてヤングな方、多いかと思います。
しかし、業務でCapistranoを使用しているとこんなことありませんか。
ふむ、このプロジェクトではサーバデプロイ自動化してるのか。
どうやらCapistrano2を使っているようだ。
Capistrano2始めて使うから、インストールからはじめなきゃ...
意気揚々と、使い始めます
デプロイ楽すぎて脳汁でそう...。こりゃ捗るわー!
しかし
はっ!次のプロジェクトではCapistrano3だと?しかも、Capistrano2との共存はめんどくさい...。しかたないなー。RbenvでRubyのバージョンを管理してるし、Capistrano2は1.9系で、Capistrano3は2.0系で管理するかー...
そんなことありませんか?僕はありました。
つまり
同じバージョンのRubyを使用しつつ、プロジェクト毎に使用するgemを使い分けたい
基本的には下記のサイトを超参考しました。
http://whiskers.nukos.kitchen/2014/10/06/bundle_exec_alias.html
http://qiita.com/misopeso/items/2db2d791eb4c226ed5dc
ざっくり言うと
- rbenvによるRubyの管理がされている
- 使用するRubyにbundleがインストールされている
- rbenv-binstubsというプラグインを追加する
- Capistrano2や3を使用するリポジトリルート上で、gemfileを作成(Railsである必要はない)し、そのプロジェクトで使用するgemを指定する
- bundle installする際に使用するrubyのリンク?と、gemのインストール先をそのディレクトリ内に指定してあげる
- そのプロジェクト内でのみの環境が手に入る
記憶を頼りに、上記のコマンドをご説明していきます。
また、今回はgitによるプロジェクトの管理が行われているため、リポジトリルート上で諸々の作業を行います。
1. RbenvによるRuby管理
より詳しい記事があるので、是非参考にしてください。
http://dev.classmethod.jp/server-side/language/build-ruby-environment-by-rbenv/
2. 使用するRubyにbundleがインストール
RbenvでRubyが正しく管理されていることを確認 & 使用したいRubyが正しく使用されることを確認して...
$ gem install bundle
$ bundle update
done!
3. rbenv-binstubsというプラグインを追加する
$ mkdir ~/.rbenv/plugins
$ cd ~/.rbenv/plugins
$ git clone git://github.com/ianheggie/rbenv-binstubs.git
$ vi ~/.zshrc # ワタクシはzshを使用しているため、zshrcです
export PATH=./vendor/bin:$PATH # 追記する
$ source ~/.zshrc # zshrc反映
4. Capを使用するリポジトリルート内でgemfileを用意
# リポジトリルートにて
$ bundle init
gemfileが用意されるはずです。そこに、必要なgemを書いてあげてください
$ vim gemfile
gem 'capistrano2' # このプロジェクトではCapistrano2を使用
5. bundle install
# リポジトリルートにて
$ bundle install --path=vendor/bundle --binstubs=vendor/bin
これで使えるようになりました!おわり。
記憶を頼りにしているため、上手く行かなかったらコメントくださいませ。
また、もっと良い方法や勘違いがあったらコメント出さると...