Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby Make Gem::Specification.find_by_name返回正确的Gem版本_Ruby_Bundler - Fatal编程技术网

Ruby Make Gem::Specification.find_by_name返回正确的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的值。

我有一个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\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”)
查找?请参阅,但也许答案中的一点内容会更好谢谢您的回答。我更新了问题以澄清。