QA@IT

Gemfile の group :production の読み込みについて

4922 PV

Herokuで動かしてるRailsアプリのバックアップを取るために
Gemfileに

group :production do
  gem 'heroku_backup_task'
end

と書いておき、この状態でローカル環境でサーバーを動かすと heroku_backup_task の gemがないためエラーに成ってしまいました。
bundle install を行えば問題なくインストールできエラーも失くせたのですが、
development環境で使わないgemでも存在しないと動かないのには何か意味があるのでしょうか?

今回はローカルでもインストールできたため何の問題もないのですが、
例えばローカルの開発環境ではインストールできず、production環境でのみインストール可能なgemがあった時に不便だと思うんです。

リファレンスを確認してみましたが、読み込みの条件についての記述を見つけられませんでした。
http://railsdoc.com/references/gemfile

  • ローカルの実行モードはproduction以外になっていますか? -
  • はい。rails s で起動させて、"Rails 3.2.13 application starting in development"のメッセージも表示されています。 -

回答

Herokuは開発環境と本番環境の差異可能な限りなくすようにすることを推奨しています。なので本番環境で利用する gem は開発環境にもインストールしましょう。

というのが建前です。

とはいえ、それが難しい場合もあります。その場合はローカルの環境では bundle install --without=production をつかえば group :production で囲まれた gem はインストールされません。

編集 履歴 (0)
  • --without=production というオプションが使えたのですね。ありがとうございます。 -
ウォッチ

この質問への回答やコメントをメールでお知らせします。