rbenvがあればCapistranoのbundle:installでdeploymentはいらない

2012-11-01

Railsで開発していて、デプロイはcapistranoを使い、本番環境でrbenvを使ってる皆様こんにちは。 そのような皆様のconfig/deploy.rb に以下のような記述があると思います。

require "bundler/capistrano"
set :default_environment, {
  'RBENV_ROOT' => '$HOME/.rbenv',
  'PATH' => "$HOME/.rbenv/shims:$HOME/.rbenv/bin:$PATH"
}
set :bundle_flags, "--quiet --binstubs --shebang ruby-local-exec"

この、bundle_flags ですが、デフォでは --deployment --quiet という値が設定されています。 --deployment ってなんなの。デプロイするんだから、必要だよね?とか思っていたけど、これは不要ですよ、というお話です。

bundle install –deployment

--deployment は、自分が管理権限を持たないサーバに対してデプロイする場合、bundle installしてもpermission errorgemをインストールできないので、プロジェクト直下にvendorディレクトリを作ってそこにgemをインストールしようぜ、というアプローチです。

よって、管理権限があるなら不要です。更に、rbenvをインストールしておくと、デプロイユーザごとにgemをインストールできますね。 これにより、更に--deploymentの必要がなくなります。

つまり、本番環境でrbenv使っている人は、config/deploy.rb では上記のようにすると良いでしょう、ということでした。

まとめ

レンタルサーバなどで管理権限なくて、rbenvも導入してない場合に限り、--deployment フラグを使うとよいでしょう。それ以外は使う必要なし。

# :bundle_flags には --deployment が初期設定されているから、上書きする
set :bundle_flags, "--quiet --binstubs --shebang ruby-local-exec"

あー、すっきりした。

  • このエントリーをはてなブックマークに追加
comments powered by Disqus

Recent Article

About Me

身近な問題をみつけて、それを解決するためのサービスをつくっている。

SFA(営業支援ソフト)会社のJavaエンジニアだった頃に、新サービス開発の依頼を受けてRubyエンジニアとなる。

P4D デザイナー向けプログラム部デザインビギナーズというデザイン勉強会に参加し、デザインの面白さに触れたりしている。

もっと詳しく