构建一个红宝石宝石,并有条件地指定依赖关系
我正在开发一个宝石,当宝石安装时,需要有条件地设置依赖项。我已经做了一些挖掘
看起来我并不孤单,在这个需要。 Rubygems: How do I add platform-specific dependency? 这是一个很长的线程 http://www.ruby-forum.com/topic/957999 我可以看到添加依赖关系到gem的唯一方法是在.gemspec文件中的Gem :: Specifiction块中使用add_dependency方法 Gem::Specification.new do |s| # ... standard setup stuff # conditionally set dependencies s.add_dependency "rb-inotify","~> 0.8.8" if RUBY_PLATFORM =~ /linux/i s.add_dependency "rb-fsevent","~> 0.4.3.1" if RUBY_PLATFORM =~ /darwin/i s.add_dependency "rb-fchange","~> 0.0.5" if RUBY_PLATFORM =~ /mswin|mingw/i end 根据我在网上发现的所有文档和线程,我预计如果你安装了gem > Linux,那么,rb-inotify将是一个依赖关系并自动安装 不过,事实并非如此。块内的“if”语句在构建和打包宝石时进行评估。因此, 仍然需要一个解决方案,我在rubygems代码中挖掘,似乎以下是发生什么的广泛的发生。 >为你的宝石构建你的所有代码:foo.gem 看来,当gem被构建和释放时,foo.gemspec文件被加载,并且Gem :: Specification块被评估并转换成YAML,被压缩为 相反,您会看到如下所示的内容: Gem::Specification.new do |s| if s.respond_to? :specification_version then s.specification_version = 3 if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then s.add_runtime_dependency(%q<rb-inotify>,["~> 0.8.8"]) else s.add_dependency(%q<rb-inotify>,["~> 0.8.8"]) end else s.add_dependency(%q<rb-inotify>,["~> 0.8.8"]) end end 好。所以,我有一个鸟瞰的过程,但是,这并不改变我的愿望,构建一个单一的宝石,并有条件地指定一系列的操作系统目标的依赖。 如果有人有一个解决方案,除了为每个目标操作系统构建多个.gemspec文件…我都是耳朵!
我自己从来没有这样做,但是有一些平台特定版本可用的宝石:
http://rubygems.org/gems/libv8/versions
从我所知道的只是一个命名的东西,可以通过设置gemspec的平台选项进行配置。看看doc:http://guides.rubygems.org/specification-reference/#platform= (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- C#:Process.HasExited返回false,即使进程已终止
- XML-世界上最难学的语言,我的XML创新之路(2)
- 如何创建Oracle表的副本包括触发器,序列和索引
- ruby-on-rails – Rails ActiveRecord存储和新会话
- Oracle SQL Developer:如何从ref cursor查看结果?
- Newtonsoft.Json.dll 使用
- Oracle EBS 启用"帮助-诊断"
- c – 当objectname包含特定字符串时,QWidget findChildren
- c – 在使用GLUT时避免全局变量
- vue 多入口文件搭建 vue多页面搭建的实例讲解