5

私は開発者チームと協力しており、全員がリポジトリから同じ Gemfile を使用しています。私は Mac で作業しており、他の人は Ubuntu を使用しているため、レポジトリにも Gemfile.local.example ファイルがあり、各 OS に適切な通知ジェムがすべてコメント アウトされています。

OS の gem のコメントを外し、バージョン管理ではなく、Gemfile.local という新しいファイルとして保存しました。ここで、「bundle install」で両方のファイルから gem をインストールしたいと思います。

これを行うための適切なドキュメントが見つかりません。

4

4 に答える 4

7

1つだけ持ってグループGemfileなどを使用したり、:platformフラグを使用してOS Xにいくつかのgemをインストールしたり、Ubuntuに他のgemをインストールしたりしないのはなぜですか?

Gemfile を 2 つ持つのはかなり扱いにくいようです。本当にやりたい場合は、使用する Gemfile をbundle config( man ページ) に提供できます。

于 2012-07-19T16:51:59.023 に答える
5

2つのGemfileを使用することは悪い習慣であることに同意し、GemfileのフラグRUBY_PLATFORMとともに定数を含む解決策を見つけました。platformこれは最もエレガントな解決策ではないかもしれませんが、私にとってはうまくいきます。

好奇心旺盛な読者のための私のコードのチャンクは次のとおりです。

group :development, :test do
  # Mac OSX notifications
  gem 'growl_notify' if RUBY_PLATFORM.downcase.include?("darwin")
  gem 'growl' if RUBY_PLATFORM.downcase.include?("darwin")

  # Gnome notifications => aka for Linux
  gem 'libnotify' if RUBY_PLATFORM.downcase.include?("linux")

  # Guard-spork doesn't work with windows but it's
  # awesome for other Operating Systems.
  gem 'guard-spork' if RUBY_PLATFORM.downcase.include?('darwin') || RUBY_PLATFORM.downcase.include?('linux')

  # Windows Rubies (RubyInstaller)
  platforms :mswin, :mingw do
    # Windows notifications
    gem 'rb-notifu' 
  end
end
于 2012-07-19T19:16:55.153 に答える
1

クロスプラットフォームの互換性についてはわかりませんが(OS Xのみをサポートしているようです)、RVMジェムセットを調べる価値があります。私は仕事で私のマックでこれを使用します、そしてそれは美しく働きます。

RVMを使用すると、rvm useコマンドを実行して、複数のgemset構成を作成して使用できます。ジェムは私が現在使用しているジェムセットにインストールされているので、グローバルジェムセットの競合について心配する必要はありません。

https://rvm.io//

于 2012-07-19T17:30:13.560 に答える
0

すべて同じものを使用しGemfile、マスターGemfile.lockも循環している必要があります。少なくともこれが理想です。

Bundle.setupRuby を使用してロードされるセクションを区別し、グループを使用して特定のプラットフォームにのみ関連するものを定義できることを覚えておいてください。

Gemfile.lock、アプリケーションの展開方法に関する特定の要件を表す必要があります。バージョン管理システムにあるはずなので、アプリケーションがどのバージョンで起動するかについて混乱することはありません。ここにプラットフォームの問題がある場合は、使用するものに注意し、必要に応じて依存関係を:developmentグループのみにロックダウンする必要があります。

于 2012-07-19T16:52:44.777 に答える