Jar*_*eck 7 ruby rubygems bundler
在运行时,在完成捆绑器设置并应用组之后,以编程方式检查给定gem_name是否在捆绑中的最佳方法是什么?
通过阅读来源,我发现Bundler.definition,例如
gem_name = 'banana'
Bundler.definition.dependencies.map(&:name).include?(gem_name)
Run Code Online (Sandbox Code Playgroud)
但无法找到文档1,我不知道这是否是推荐用法.
更新:它看起来像Bundler::Definition#dependencies返回所有依赖项,而不管组.作为替代方案,我发现Bundler::Runtime#dependencies_for哪个将组作为参数.
Bundler.load.dependencies_for(:default, Rails.env).map(&:name).include?(gem_name)
Run Code Online (Sandbox Code Playgroud)
但是,在每个呼叫站点复制"组列表"似乎是个坏主意.理想情况下,我想要一种方法Bundler,不要求我指定当前组.
1 bundler网站和手册页专注于命令行使用.我还没有找到有关gem的公共ruby API的任何文档.源代码中的注释很有帮助,但主要关注数据类型等.
mat*_*att 14
Bundler用于设置应用程序gem,因此您可以使用GemAPI而不是Bundler:
Gem.loaded_specs.has_key? gem_name
Run Code Online (Sandbox Code Playgroud)
Bundler将进行设置,以便捆绑中的任何宝石(在适当的组中)已被激活(因此它们将具有条目loaded_specs),并且将阻止加载任何其他(非束)宝石.
| 归档时间: |
|
| 查看次数: |
1123 次 |
| 最近记录: |