Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/23.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/Bundler-如何强制嵌入在gem中的Ruby可执行文件使用gem文件_Ruby_Bundler - Fatal编程技术网

Ruby/Bundler-如何强制嵌入在gem中的Ruby可执行文件使用gem文件

Ruby/Bundler-如何强制嵌入在gem中的Ruby可执行文件使用gem文件,ruby,bundler,Ruby,Bundler,我创建了一个包含可执行文件(bin/mygem)的gem“mygem”。gempec文件定义了一些依赖项,如: gem.add_dependency('othergem', '< 1.0') gem.add_依赖项('othergem','

我创建了一个包含可执行文件(bin/mygem)的gem“mygem”。gempec文件定义了一些依赖项,如:

gem.add_dependency('othergem', '< 1.0')
gem.add_依赖项('othergem','<1.0'))
在我的电脑上,我有两个版本的othergem:0.9和1.0

  • 当我运行bundle exec bin/mygem时,othergem的0.9版本被正确加载
  • 当我运行bin/mygem时,这是加载的othergem(1.0)的最后一个版本
合乎逻辑。问题是当我在已经有othergem 1.0版本的计算机上安装gem“mygem”时。RubyGems将安装othergem的0.9版本,以满足gem依赖性。但是当运行在终端mygem(RubyGems生成的binstub)中时,加载的是1.0版本


问题:如何让我的可执行文件加载0.9版本,而不将gem othergem嵌入类似供应商的文件夹中?谢谢。

您是否尝试过
bundle exec mygem
?应该运行捆绑版本(0.9)。我认为您正在执行安装在计算机上的文件的直接路径,该路径将始终为1.0。当给定可执行文件的路径时,bundle exec将仅在bundler的上下文中运行,而不是在bundler的上下文中运行。在我测试它时,这对我来说是可行的。您确定正在运行rubygems生成的包装,而不是直接运行gems bin目录中的文件吗?
哪个mygem
给了你什么?这是我能想到的唯一一件会导致您看到的东西。bundler应该能做到这一点,但您也可以使用rvms gemsets功能。@Aymeric看一看。我已经使用Haml作为我的
其他gem
。这些版本是
<4.0
,因此,可能有一个带有前导
0
的版本会导致差异。另外,我直接从
.gem
文件安装,而不是通过Rubygems。不过,我认为这两件事都不应该引起问题。