4

Rails 3.1を開発していて、デフォルトのuglifierアセットgemを使用しています。そのgemは、JavaScriptランタイムを必要とするexecjsに依存しています。私はMacOSXで開発しているので、問題はありませんでした。別の開発者はLinuxを使用していますが、これにはデフォルトでJavaScriptランタイムがありません。したがって、Rubyに埋め込まれたJavaScriptランタイムであるtherubyracerを使用すると、非常にうまく機能しますが、システムがLinuxの場合にのみBundlerにインストールしてもらいたいと思います。これをGemfileで指定して、MacではなくLinuxにのみインストールされるようにすることはできますか?

4

2 に答える 2

6

できるよ;

gem 'rb-fsevent', :require => false if RUBY_PLATFORM =~ /darwin/i

宝石とプラットフォームを適切なものに置き換えます。

于 2011-08-19T06:08:32.837 に答える
3

このアプローチの問題は、OS X システムが Gemfile.lock を更新すると、gem が含まれることです。これは、他の開発者が gemfile 内のいずれかの gem を更新すると、依存関係を計算するときにバンドラーが gem を含めないため、問題になります。

この種の問題を解決するための私のアプローチは、必要な gem を手動でインストールしてから、両方を必要とすることです。

begin
  require 'os-x-gem'
rescue LoadError
end
begin
  require 'linux-gem'
rescue LoadError
end
于 2011-08-19T13:14:17.170 に答える