gpt4 book ai didi

ruby - 如何创建可以出现在 gem 列表中的假 gem

转载 作者:太空宇宙 更新时间:2023-11-03 16:45:14 25 4
gpt4 key购买 nike

如何在不实际安装 gem 的情况下使 gem 出现在 gem 列表中?

我确实尝试查看 GemRunner 代码,但没看懂。

最佳答案

文件<rub-install-dir>/bin/gem是执行 gem 命令的 Ruby 脚本。使用命令行时,它使用 Gem::ConsoleUI user_interaction.rb 中定义.因此,gem 命令通常会将命令的输出转储到控制台。

对于您的测试,您可能需要使用 Gem::MockGemUi它允许您将 gem list 命令的输出收集到一个字符串中。

这里有一个示例 Ruby 程序来演示这一点。

require 'rubygems'
require 'rubygems/commands/list_command'
require 'rubygems/mock_gem_ui'

list_command = Gem::Commands::ListCommand.new
p list_command.ui
list_command.ui = Gem::MockGemUi.new
list_command.execute

list_command.ui.outs << "fake_gem (2.1.0)"
puts list_command.ui.output

输出将是这样的:

*** LOCAL GEMS ***

actionmailer (4.2.5, 4.2.4)
actionpack (4.2.5, 4.2.4)
...
warden (1.2.3)
web-console (2.2.1)
fake_gem (2.1.0)

最后一行是假 gem 。

更多信息可以通过研究 RubyGems 是如何编写它的 tests 找到的。 .

修改bin/gem可能不是个好主意虽然文件有自定义输出,但最好使用 Gem::Commands::*在你的测试课上

关于ruby - 如何创建可以出现在 gem 列表中的假 gem ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34413048/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com