Ruby Make Gem::Specification.find_by_name返回正确的Gem版本
我有一个ruby gem(我们称之为Ruby Make Gem::Specification.find_by_name返回正确的Gem版本,ruby,bundler,Ruby,Bundler,我有一个ruby gem(我们称之为my_gem),它公开了一个可执行文件(我们称之为my_exe)。当我将gem“my\u gem”,“0.0.1”添加到应用程序的gem文件并运行bundle exec my\u exe时,我在调用gem::Specification时正确地获得了版本0.0.1的gem规范。按名称(“my\u gem”)查找 我需要这个可执行文件在没有bundler参与的情况下工作。当我执行 my\u gem\u 0.0.1 然后查看Gem::Specification的值。
my_gem
),它公开了一个可执行文件(我们称之为my_exe
)。当我将gem“my\u gem”,“0.0.1”
添加到应用程序的gem文件并运行bundle exec my\u exe
时,我在调用gem::Specification时正确地获得了版本0.0.1的gem规范。按名称(“my\u gem”)查找
我需要这个可执行文件在没有bundler参与的情况下工作。当我执行
my\u gem\u 0.0.1
然后查看Gem::Specification的值。按名称(“my\u Gem”)查找,我将获得系统上最新安装版本的my\u Gem
的规范
如何获取Gem::Specification.find by_name
以返回与我传递给可执行文件的值相对应的Gem spec
更新
有一条信息我忘了提。我无法修改调用Gem::Specification的代码。按名称查找(“我的Gem”)
。该特定代码行在第三方库中调用,my_exe
调用。(库是rubocp,这里是rubocp尝试加载规范的地方(),我正在尝试设置环境以便Gem::Specification.find by_name(“my_Gem”)
返回my\u gem
版本的规范,该版本位于$LOAD\u路径
上。必须有一种方法来执行此操作,因为绑定器能够实现此操作
Gem::Specification.find_by_name("my_gem", "0.0.1")
如果找不到符合要求的规范,将引发错误。请签出
更新
根据您的更新更新我的答案
您最好在更高的层次上说明您要完成的工作。Bundler是包管理的最佳工具,您真的不想自己完成它。如果不知道您正在做什么或您试图如何实现代码,您可能可以内联Bundler
require 'bundler/inline'
gemfile
gem 'my-gem', '0.0.1'
end
# Do my work
你的意思是Gem::Specification。按名称(“我的Gem”,“0.0.1”)
查找?请参阅,但也许答案中的一点内容会更好谢谢您的回答。我更新了问题以澄清。