如何创建一个可以出现在gem列表中的假宝石

时间:2015-12-22 09:59:10

标签: ruby gem

如何在没有实际安装宝石的情况下让gem出现在gem列表中?

我确实试过看看GemRunner代码,但没有得到它。

2 个答案:

答案 0 :(得分:1)

文件<rub-install-dir>/bin/gem是一个执行gem命令的Ruby脚本。使用命令行时,它使用user_interaction.rb中定义的Gem::ConsoleUI。因此,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)

最后一行是假宝石。

通过研究RubyGems如何编写tests

,可以找到更多信息

bin/gem文件修改为自定义输出可能不是一个好主意,最好在测试类中使用Gem::Commands::*

答案 1 :(得分:-1)

1: gem 'My_own_gem', path: '<path-for-directory>'

2:运行bundle install

group :development do
  gem 'awesome', :path => "~/code/awesome"
end

了解详情how-can-bundler-gemfile-be-configured-to-use-different-gem-sources-during-dev

希望这能帮到你!!!