Bundler可以将gem安装约束到某个操作系统吗?

时间:2011-08-19 06:04:36

标签: ruby-on-rails bundler gemfile

我正在开发Rails 3.1,并使用默认的uglifier资产gem。该gem依赖于execjs,这需要JavaScript运行时。我在Mac OSX上开发,所以我从未遇到过麻烦。另一个开发人员使用Linux,默认情况下没有JavaScript运行时。所以使用therubyracer,一个嵌入在Ruby中的JavaScript运行时工作得非常好,但我希望Bundler只在系统是Linux的情况下安装它。我可以在Gemfile中指定这个,所以它只能安装在Linux而不是Mac吗?

2 个答案:

答案 0 :(得分:6)

你能做到;

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

在您的情况下用适当的宝石和平台替换宝石和平台。

答案 1 :(得分:3)

这种方法的问题在于,如果OS X系统更新了Gemfile.lock,那么将包含gem。如果其他开发人员更新gemfile中的任何gem,这会成为问题,因为Bundler在计算依赖关系时不会包含gem。

我解决此类问题的方法是手动安装我想要的gem,然后同时需要:

begin
  require 'os-x-gem'
rescue LoadError
end
begin
  require 'linux-gem'
rescue LoadError
end