【发布时间】:2014-01-02 14:57:23
【问题描述】:
如果我有一些同事的旧版 Mac OS X 不支持我想使用的 gem(特别是 terminal-notifier),那么将其放入 Gemfile 是否有危险:
gem 'terminal-notifier'
有没有办法说它需要 OS X 10.8 或更高版本?如果
【问题讨论】:
标签: ruby macos rubygems bundler gemfile
如果我有一些同事的旧版 Mac OS X 不支持我想使用的 gem(特别是 terminal-notifier),那么将其放入 Gemfile 是否有危险:
gem 'terminal-notifier'
有没有办法说它需要 OS X 10.8 或更高版本?如果
【问题讨论】:
标签: ruby macos rubygems bundler gemfile
将以下条件放入gemfile:
if RUBY_PLATFORM =~ /darwin/i
version = `uname -r` =~ /^(\d+)\./ && $1.to_i
gem 'terminal-notifier' if version >= 12
end
这应该可行。我知道在macos 10.4 的情况下uname -r 是8.x,而macos 10.5 的uname -r 是9.x。
或致电sw_vers 应用程序:
if RUBY_PLATFORM =~ /darwin/i
version = `sw_vers -productVersion` =~ /^10\.(\d+)/ && $1.to_i
gem 'terminal-notifier' if version >= 9
end
如果计划gem 与jruby 一起运行,则必须使用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
【讨论】:
uname -r 的结果。我无法测试代码。
uname -r 返回"13.0.0"。我认为更好的方法是`sw_vers -productVersion` >= '10.9'
sw_vers -productVersion 会更好,但显示你的RUBY_PLATFORM
"x86_64-darwin13.0"