Rubygems:如何添加特定于平台的依赖项?

NVI*_*NVI 32 ruby rubygems

我有一个ruby gem,它对每个操作系统都有不同的依赖关系.我必须明确地写下所有这些:

在Mac OS X上:

gem install livereload
Run Code Online (Sandbox Code Playgroud)

在Linux上:

gem install rb-inotify livereload
Run Code Online (Sandbox Code Playgroud)

在Windows上:

gem install eventmachine-win32 win32-changenotify win32-event livereload
Run Code Online (Sandbox Code Playgroud)

我可以稍微调整一下gemspec,这样gem install livereload每个操作系统的安装说明都很简单吗?

Fot*_*ios 20

这里概述执行此操作的正确方法.由于gemspec是在打包时评估的,因此您需要在本机扩展中进行评估.不要担心,它不是那么可怕,因为它仍然只是Ruby代码(不编译C或任何东西).

我们目前正在将这种方法用于OpenShift的一些客户端工具(源代码).然后在你的gemspec/Rakefile中,你可以添加一个扩展名,而不是添加依赖项.请注意,需要为此命名文件ext/mkrf_conf.rb才能生效.

  • @ Cort3z你错过了一个重点.您描述的解决方案有效,但它解决了**在安装后不使用某个操作系统的gem依赖关系的问题.最初的问题是**根本没有安装**依赖. (2认同)