QA@IT

Rails3 GemfileでMacだけを除外する記述の仕方

2560 PV

Gemfileの基本的なGemの中で
私のMac環境ではtherubyracerが不要でした。
しかし、基本的にVirtualBoxのCentOSで開発しているため、

gem 'therubyracer'

は記述しておきたいのですが、Macでは上記を除外したいのです。
platformsなどのオプションがあるようですが、
「macのみ除外する」という設定はどのようにすればよいのでしょうか。

また、groupの指定で、「:darwin」と指定できることができるようですが、

group :linux do
  gem 'therubyracer'
end

では、Macでlibv8のインストールがされてしまいうまくいきませんでした。

よろしくお願い致します。

回答

RUBY_PLATFORMを使うこちらの方法はどうでしょうか?

http://stackoverflow.com/questions/8420414/how-to-add-mac-specific-gems-to-bundle-on-mac-but-not-on-linux

unless RUBY_PLATFORM =~ /darwin/
  gem 'therubyracer'
end

となるんでしょうか。

編集 履歴 (0)
  • これだとwindows入っちゃいますけどね。 -
  • 回答ありがとうございます。git pullした状態のものをそのままbundleすることができました。Windowsは使用予定がないのでこれで十分です!ありがとうございました。 -

https://github.com/carlhuda/bundler/wiki/Platform-as-a-parameter

に説明されていますが、

group :linux do
  gem 'therubyracer'
end

としておいて、

bundle install --without linux

を一度だけ実行すれば、--without linuxオプションが.bundle/configに記録されて、次回以降は普通にbundle installだけでlinuxグループのgemがインストールされなくなります。

ただし、こうするとbundle updateしたときにもtherubyracerがアップデートされなくなってしまうので、微妙ですね。。。

編集 履歴 (1)
  • ありがとうございます。オプションが色々とあるようですね、今後はリンク先のようなオプションを読んで理解できるようにします。 -
ウォッチ

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