如何在没有实际安装宝石的情况下让gem出现在gem列表中?
我确实试过看看GemRunner代码,但没有得到它。
答案 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
希望这能帮到你!!!