Gemfileのgroupで:production, :development, :test 以外は気をつけて使う

Gemfileのgroupに:production, :development, :test 以外を使うときは各環境気をつけて使う。

具体的には、こんな.travis.ymlだったり、capistranoで”require ‘bundler/capistrano'”してると思う。

https://github.com/sanemat/soryu/blob/gh-pages/www.ohmyglasses.jp.travis.yml
https://github.com/carlhuda/bundler/blob/master/lib/bundler/deployment.rb

このとき、:personalだけにほしいgemがあったとすると、こう書きたくなる。

Gemfile
group :personal do
  gem 'EVIL_GEM'
end

でも、こう書いて、いろんなデプロイスクリプト気にせずにいると、productionにもtestにもはいってしまう。bundlerにwithout指定しかないから。

.travis.yml
bundler_args: –deployment –without development production
=> こう変える必要がある
bundler_args: –deployment –without development production personal

https://github.com/carlhuda/bundler/blob/master/lib/bundler/deployment.rb
bundle_without = [*context.fetch(:bundle_without, [:development, :test])].compact

デフォルト設定から変更するので上書いてやる必要がある
set: :bundle_without, %w(:development, :test, :personal) そんな記法無かった
set: :bundle_without, [:development, :test, :personal]

これは、stagingにほしいgemにstagingとつけていたら(正確には group :production, :staging)、travis環境にもインストールされてしまい、気付けた。

lokkaのGemfileにデータベースごとのgroupあるって聞いた https://github.com/komagata/lokka/blob/master/Gemfile

広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中