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