在GitHub上使用Bundler和gems

3
当您使用bundler从github安装宝石时,它实际上并没有被安装,对吧?gem list不会列出这些宝石。
这就带来了我的难题:我正在编写一个脚本,想要使用其中一个未实际安装的宝石。现在怎么办?我可以手动检出github存储库并构建/安装宝石,但现在我有一个由bundler管理的版本和另一个没有被管理的版本。我可以将脚本指向~/.rvm中的宝石目录,但当到达生产环境时,这并不是一个好主意。
我正在尝试找到一个bundler命令,可以使任何来自github的宝石“注册”到rubygems,但目前没有找到。有什么建议吗?

2
你尝试过输入"bundle show agemthatdoesntshowingemlist"吗?(将agemthatdoesntshowingemlist替换为gem列表中未显示的gem) - hellvinz
当然,这列出了它在~/.rvm/gems中的位置,但显然没有在rubygems中“注册”,因为require 'hiddengem'无法工作:LoadError: no such file to load — hiddengem。就像我所说的,我可以要求提供宝石的完整路径,并且我的脚本在我的本地系统上可以正常工作,但如果我将代码放在其他任何地方,它都会出现问题。 - Rob Cameron
2个回答

2

有趣的是这与我之前提出的一个问题的答案相同,我用同样的解决方案来回答自己(虽然在 bundler 0.9 中有些不同):

require 'rubygems'
require 'bundler/setup'
require 'hiddengem'

bundler/setup 使bundler的“堆栈”可用,就像它们是常规安装的gems一样。迟早我会记住这个。


0

rubygems-bundler 是一个解决这个问题的 gem。如果它已经安装在你的系统上,你的项目中就不需要任何额外的代码了。可能需要将其安装为 @global,总之:

$ rvm use @global
$ gem install rubygems-bundler

然后,要返回到你使用的 rvm 版本:

$ rvm use @

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接