Ruby/Bundler-如何强制嵌入在gem中的Ruby可执行文件使用gem文件
我创建了一个包含可执行文件(bin/mygem)的gem“mygem”。gempec文件定义了一些依赖项,如:Ruby/Bundler-如何强制嵌入在gem中的Ruby可执行文件使用gem文件,ruby,bundler,Ruby,Bundler,我创建了一个包含可执行文件(bin/mygem)的gem“mygem”。gempec文件定义了一些依赖项,如: gem.add_dependency('othergem', '< 1.0') gem.add_依赖项('othergem','
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)的最后一个版本李>
问题:如何让我的可执行文件加载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。不过,我认为这两件事都不应该引起问题。