在ruby Gemfile中指定gem的可选依赖项的正确方法
发布时间:2020-12-17 02:14:46 所属栏目:百科 来源:网络整理
导读:宝石打算支持宝石a或b作为功能的替代品. 在代码中我用定义的方法检查?(A)如果我回到b那很好. 但作为宝石开发者如何指定这些依赖关系? 1)我把什么放在Gemfile中. group :development,:test do gem 'a',:require = false gem 'b',:require = falseend 这允许
宝石打算支持宝石a或b作为功能的替代品.
在代码中我用定义的方法检查?(A)如果我回到b那很好. 但作为宝石开发者如何指定这些依赖关系? 1)我把什么放在Gemfile中. group :development,:test do gem 'a',:require => false gem 'b',:require => false end 这允许Bundle.require(:test)不要自动要求a,b? 2)当我们在测试中回到b时,如何明确要求a和b分别模仿(或模拟)场景? 3)另外如何指定a或b是gem的先决条件. 谢谢 解决方法
不要在依赖项中包含gem,但无论如何都需要它.如果失败,则会引发LoadError,您可以从中进行救援.
begin require 'a' rescue LoadError # The 'a' gem is not installed require 'b' end 我相信这是使用和测试此设置的最佳方式: >为后端定义接口,并允许轻松插入自定义实现. module YourGem class << self attr_accessor :backend def do_something_awesome backend.do_something_awesome end end end >实现a和b后端. # your_gem/backends/a.rb require 'a' module YourGem::Backends::A def self.do_something_awesome # Do it end end # your_gem/backends/b.rb require 'b' module YourGem::Backends::B def self.do_something_awesome # Do it end end >设置您要使用的那个. begin require 'your_gem/backends/a' Gem.backend = YourGem::Backends::A rescue LoadError require 'your_gem/backends/b' Gem.backend = YourGem::Backends::B end 即使安装了b,也会使用YourGem :: Backend :: A.>在测试之前,确保安装了a和b gems,在测试代码中需要两个后端,用一个后端运行测试,然后再用另一个后端运行测试. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |