LoginSignup
3
3

More than 5 years have passed since last update.

GemfileはRailsだけのものじゃない!Capistrano2と3の共存について考えてみた

Posted at

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

ざっくり言うと

  1. rbenvによるRubyの管理がされている
  2. 使用するRubyにbundleがインストールされている
  3. rbenv-binstubsというプラグインを追加する
  4. Capistrano2や3を使用するリポジトリルート上で、gemfileを作成(Railsである必要はない)し、そのプロジェクトで使用するgemを指定する
  5. bundle installする際に使用するrubyのリンク?と、gemのインストール先をそのディレクトリ内に指定してあげる
  6. そのプロジェクト内でのみの環境が手に入る

記憶を頼りに、上記のコマンドをご説明していきます。
また、今回は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

これで使えるようになりました!おわり。
記憶を頼りにしているため、上手く行かなかったらコメントくださいませ。
また、もっと良い方法や勘違いがあったらコメント出さると...

3
3
0

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
3
3