ウェブサービスを作っています。

特定のプラットフォームに依存した gem を bundler で管理する

Rails, Capistrano も使ってる前提です。


まず Gemfile に、プラットフォーム別のグループを作ります。
darwin, linux というグループ名でなくてもいいですが、後述のことを考えるとこれが無難です。

group :darwin do
  gem 'mac 用 gem'
end

group :linux do
  gem 'linux 用 gem'
end


次に、config/appication.rb に以下を追加します。

if group = RUBY_PLATFORM[/(linux|darwin)/, 1]
  Bundler.require group
end

定数 RUBY_PLATFORM の結果を使って、読み込むグループを決めています。


最後に、config/deploy.rb で、デプロイ時に不要なグループを読み込まないようにします。

set :bundle_without, [:development, :test, :darwin]

(require 'bundler/capistrano' している前提です)