将gem放入gemfile的危险是有人试图安装它不支持gem?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将gem放入gemfile的危险是有人试图安装它不支持gem?相关的知识,希望对你有一定的参考价值。

如果我的某些同事有一个旧版本的Mac OS X不支持我想要使用的宝石(特别是terminal-notifier),是否存在把它放入Gemfile的危险:

gem 'terminal-notifier'

有没有办法说它需要OS X 10.8或更高版本?如果<10.8的某个人试图安装终端通知器会怎样?我正在使用最新的操作系统,因此无法对此进行测试。

答案

放入以下条件:

if RUBY_PLATFORM =~ /darwin/i
   version = `uname -r` =~ /^(d+)./ && $1.to_i
   gem 'terminal-notifier' if version >= 12
end

这应该工作。我知道,在 10.4的情况下,uname -r是8.x,而是10.5,uname -r是9.x.

或者致电sw_vers app:

if RUBY_PLATFORM =~ /darwin/i
   version = `sw_vers -productVersion` =~ /^10.(d+)/ && $1.to_i
   gem 'terminal-notifier' if version >= 9
end

如果要计划一起运行,你必须使用rbconfig模块。

if RbConfig::CONFIG['host_os'] =~ /darwin|mac os/i
   version = `sw_vers -productVersion` =~ /^10.(d+)/ && $1.to_i
   gem 'terminal-notifier' if version >= 9
end

以上是关于将gem放入gemfile的危险是有人试图安装它不支持gem?的主要内容,如果未能解决你的问题,请参考以下文章

更新后如何保持 Gemfile 中的所有 gem 兼容

Gemfile 中的 Ruby Bundler 多个源

如何在我的 Gemfile 中指定本地 .gem 文件?

捆绑安装后Rails 3 Gemfile Gems未加载

如何通过 Gemfile “gem install nokogiri -- --use-system-libraries”

我可以在 gemfile 中强制 gem 的依赖项吗?