以编程方式检查 gem 是否在捆绑包中?

2023-12-22

在运行时,捆绑器设置完成后,并且groups http://bundler.io/v1.7/groups.html应用后,以编程方式检查给定值是否有效的最佳方法是什么?gem_name是在捆绑包中吗?

通过阅读源码,我发现Bundler.definition https://github.com/bundler/bundler/blob/master/lib/bundler.rb#L152, e.g.

gem_name = 'banana'
Bundler.definition.dependencies.map(&:name).include?(gem_name)

but unable to find documentation1, I don't know if this is the recommended usage.

更新:看起来像Bundler::Definition#dependencies返回所有依赖项,无论组如何。作为替代方案,我发现Bundler::Runtime#dependencies_for它以组作为参数。

Bundler.load.dependencies_for(:default, Rails.env).map(&:name).include?(gem_name)

然而,在每个调用站点复制“组列表”似乎是一个坏主意。理想情况下,我想要一种方法Bundler这不需要我指定当前组。

1 The bundler website and man page are focused on command-line usage. I have not found any documentation on the gem's public ruby API. Comments in the source are helpful, but focused on data types, etc.


Bundler 用于设置应用程序 gem,因此您可以使用GemAPI 而不是Bundler:

Gem.loaded_specs.has_key? gem_name

Bundler 将进行设置,以便捆绑中的任何 gem(在适当的组中)都已被激活(因此它们将在loaded_specs)和任何其他(非捆绑)宝石将被阻止加载。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

以编程方式检查 gem 是否在捆绑包中? 的相关文章

  • gem 无法访问 ruby​​gems.org

    我有一个带有 Rackspace 的服务器 用于一些 Ruby 站点 当我尝试时bundle install在一个新网站上我得到 Retrying download gem from http rubygems org due to err
  • Watir Webdriver 加载 Chrome 扩展

    我正在尝试使用 Watir 加载 chrome 扩展 但遇到了问题 我发现这个相关问题 能够启动带有 watir webdriver 加载扩展的 chrome https stackoverflow com questions 125867
  • ruby 认为我正在引用顶级常量,即使我指定了完整的命名空间

    在我的应用程序中我有 class User include User Foo end User Foo定义在 app models user foo rb 中 现在我正在使用一个定义自己的库Foo班级 我收到此错误 警告 User Foo
  • 比较 ruby​​ 哈希值[重复]

    这个问题在这里已经有答案了 可能的重复 如何比较两个哈希值 https stackoverflow com questions 4928789 how do i compare two hashes 我有两个 ruby 哈希值 本质上是模型
  • Rails 中的字母分页

    我正在寻找 Rails 的宝石用于字母分页 我希望我可以在结果中找到第一个字母的列表 我的意思是 如果没有以 a 开头的行 我不希望 a 显示在分页链接上 这种宝石已经存在了吗 提前致谢 这根本不难创建 例如 如果您有一个find 也许像
  • 在 Rails 中本地化嵌套虚拟属性

    怎么可能本地化嵌套虚拟属性在 Rails 中 该模型 class User lt ActiveRecord Base attr accessor company information This is used in callbacks e
  • 尝试使用 Ruby Java Bridge (RJB) gem 时出现错误“无法创建 Java VM”

    我正在尝试实现 Ruby Java Bridge RJB gem 来与 JVM 通信 以便我可以运行 Open NLP gem 我在 Windows 8 上安装并运行了 Java 所有迹象 至少我所知道的 都表明 Java 已安装并可运行
  • '回应?'与“定义?”

    如果我想检查是否定义了给定名称的方法 使用哪个更好 respond to or defined 从效率的角度来看 可以有理由使用defined 因为defined 是一个内置关键字 而respond to 是一种方法 因此前者可能更快 但另
  • 如何通过 Ruby 中的代理获取带有用户代理和超时的 URL?

    如果我需要通过某些方式获取 URL 我该如何获取 URLproxy 它必须有一个timeout最大 n 秒 和一个用户代理 require nokogiri require net http require rexml document d
  • 如何将文件的元素放入哈希中? -红宝石

    所以我有一个以下形式的文件 Key1 Value1 Key2 Value2 Key3 Value3 用制表符分隔 我的问题是如何打开这个文件并将其放入哈希中 我曾尝试这样做 fp File open file path fp each do
  • 如何在 mongoid 中使用 or 条件进行查询

    如何在 Mongoid 中使用 or 条件进行查询 这是 OR 在 mongoid 中查询 如果你想要像下面这样的查询 select from user where id 10 or name hitesh 在带有 mongoid 的 Ra
  • 如何在不初始化Rails的情况下从schema.rb创建数据库?

    我正在尝试从 schema rb 创建所有表 我使用命令 rake db schema load 但是 这失败了 因为在我的一个初始化程序中 它引用了一个显然不存在的模型 表 因为数据库为空 我可以注释掉这些行 然后再次运行 schema
  • 通过 ruby​​ 进程共享变量

    我正在编写一个 gem 其中我必须分叉两个进程来启动两个 webrick 服务器 我想通过基类的类方法启动该服务器 因为应该只运行这两个服务器 而不是多个服务器 在运行时 我想调用这两台服务器上的一些方法来更改变量 我的问题是 我无法通过基
  • 使用哈希时 fetch 与 [] ? [复制]

    这个问题在这里已经有答案了 来自鲁比 科恩斯about hashes rb 为什么你可能想使用 fetch代替 当访问哈希键时 默认情况下 使用 如果存在则检索哈希值 如果不存在则返回 nil Using fetch给你一些选择 请参阅文档
  • 更新系统后RubyGems错误

    使用 sudo gem update system 更新 ruby 设置后尝试启动 Rails 控制台时 我尝试通过发出以下命令来执行 Rails 控制台rails c 我收到此错误 Users myusername rvm rubies
  • Ruby:创建日期范围

    我正在寻找一种优雅的方式来制作一系列日期时间 例如 def DateRange start time end time period end gt gt results DateRange DateTime new 2013 10 10 1
  • 如何从 Rails 项目中删除 gem?

    我正在尝试从我的项目中删除一个 gem 因此我进入了 gem 文件并将其注释掉 gem some gem gem gem I dont want gem another gem 然后我跑 bundle 为了检查宝石是否消失 我输入 bund
  • 如何让 DateTime.parse 返回您所在时区的时间?

    我需要这个 require date DateTime parse Mon Dec 27 6 30pm 返回 EDT 时区下午 6 30 的日期时间 但返回 UTC 时间 如何获取 EST 日期时间或将 UTC 日期时间转换为下午 6 30
  • 可以通过 url 发送 JSON 吗?

    我有一个 ruby 哈希 其中键是 url 值是整数 我将哈希值转换为 JSON 我想知道是否能够通过 AJAX 请求在 url 内发送 JSON 然后从 params 哈希值中提取该 JSON 另外 我将把 JSON 化的 ruby 哈希
  • 捆绑安装到开发

    由于某种原因 当我跑步时bundle install它安装到生产中 Your bundle is complete It was installed into RAILS ENV production Arrrghh 我如何切换回开发 No

随机推荐

  • Spring Boot程序找不到主类

    我有一个程序在 eclipse 中作为 Spring boot 应用程序运行 程序运行良好 然后我做了以下事情 右键单击项目 gt 运行方式 gt Maven 测试 这是偶然的 当我尝试再次将程序作为 Spring Boot 应用程序运行时
  • 解压 1 个变量,剩余到列表中

    我想知道这是否可能 def someFunction return list range 5 first rest someFunction print first 0 print rest 1 2 3 4 我知道可以用这三行来完成 res
  • SQLAlchemy 查询包含多个值中任意一个的数组

    我想我可以在互联网上的某个地方找到这个问题的答案 但我似乎错过了 您可以查询表中数组列包含特定值的所有行 MyModel query filter Mymodel arrayField contains someValue 您可以输入多个值
  • 为什么 SQL Server 选择聚集索引扫描而不是非聚集索引扫描?

    在我正在查询的一个表中 聚集索引是在非主键的键上创建的 我不知道为什么 但是 该表的主键有一个非聚集索引 在执行计划中 SQL 选择聚集索引 而不是我在查询中使用的主键的非聚集索引 SQL 这样做有什么原因吗 如何强制 SQL 选择非聚集索
  • C# 属性命名事件

    我正在使用 Json 序列化程序 需要绑定到一个名为 event 的属性名称 当然 event 是 C 中的关键字 因此请执行以下操作string event get set 不允许 有什么办法去做吗 我无法更改返回给我的对象的名称 假设您
  • 如何从张量流中的两个张量创建频率张量

    我有一个像这样的张量 其中值是频率 行是索引 0 to 6 tf docs 0 2 1 2 2 1 5 0 0 1 7 8 9 6 我有一个常数张量 其中张量的值是索引 tf topics tf constant 1 2 1 3 1 0 2
  • 表单提交导致“InvalidDataException:超出表单值计数限制 1024”。

    我创建了一个 mvc 站点 并且发布了大量的 json 表单数据 Content Type application x www form urlencoded 回到mvc控制器 当我执行此操作时 我收到一条 500 响应 其中指出 Inva
  • 使自定义 Airflow 宏扩展其他宏

    有没有办法在 Airflow 中创建一个用户定义的宏 它本身是根据其他宏计算出来的 from airflow import DAG from airflow operators bash operator import BashOperat
  • React Native 播放来自 IP 摄像机的 RTSP 流 [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我想在 iOS 设备中通过 IP 网络通过 RTSP 协议播放视频流 h264 我正在使用 React
  • 谷歌地图API,获取用户城市/最近的城市/一般区域

    我一直在尝试编写一个函数 返回一个人所在或附近最合理 规模适中的城市 城镇 地区 yik yak 等应用程序使用这样的算法将人们分组在一起 有没有现有的算法可以做到这一点 目前我正在使用这个 geocoder geocode latLng
  • 使用具有多个结果集的 exec 进行 INSERT INTO

    SQL Server 允许我将存储过程的返回结果集插入为 DECLARE T TABLE ID int Name varchar 255 Amount money INSERT INTO T exec dbo pVendorBalance
  • 如何过滤数组循环中的数据

    在我的数组中是这样的 var myColumnDefs a hh b hh c jk d ggh e hvh a dd b gg d nn e rr f jj 我想过滤数据并将数据插入到新数组中 如下所示 var newarray a b
  • Twitter Streaming API .NET 库 [已关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 按子字段对嵌套序列化器字段的 DRF 序列化器输出进行排序

    我有两个序列化器 其中一个用一个引用另一个many True关系 class AttributeInParentSerializer ModelSerializer masterdata type CharField max length
  • 这是不可变类和 Builder 模式的有效 Java 实现吗?

    Builder 实现 Cloneable 并重写clone 不可变类保留构建器的私有克隆 而不是复制构建器的每个字段 这使得返回新的构建器并创建不可变实例的稍微修改的副本变得容易 这条路我可以走 MyImmutable i1 new MyI
  • Intent(Settings.ACTION_SETTINGS) 的 onActivityResult 立即调用

    在我的启动屏幕中 我向服务器发出请求 但是当没有互联网连接时 我正在打开 Intent settingsIntent new Intent Settings ACTION SETTINGS startActivityForResult se
  • MySQL 日期格式

    当我在mysql中创建一个表并创建一个日期类型的字段时 它存储的日期如0000 00 00 是否可以将格式更改为 d m Y Go to MySQL 参考 10 5 数据类型存储要求 http dev mysql com doc refma
  • 评估球拍响应/xexpr 中的变量

    我正在尝试在 Racket 中制作一个简单的书签网络应用程序 它的目的是接收一个 url 作为 CGI 参数 现在 我只是试图通过反射它来确认我收到了它 define start request response xexpr let bin
  • 如何在 R 中的字符串中的每个单词周围添加引号?

    我有一个字符串 words lt Monday Tuesday Wednesday Thursday Friday 我只需要为每个单词添加引号 Monday Tuesday Wednesday Thursday Friday 得到长度为 5
  • 以编程方式检查 gem 是否在捆绑包中?

    在运行时 捆绑器设置完成后 并且groups http bundler io v1 7 groups html应用后 以编程方式检查给定值是否有效的最佳方法是什么 gem name是在捆绑包中吗 通过阅读源码 我发现Bundler defi