场景:
以rack为例,假设项目的rack有两个不同的版本(1.6.5, 2.0.1)。
在运行项目时,会默认先加载 2.0.1版本的rack,这个时候依赖1.6.5版本的gem就炸了,比如sinatra。
Then you will see :
! Unable to load application: Gem::ConflictError: Unable to activate sinatra-1.4.8, because rack-2.0.1 conflicts with rack (~> 1.5)
解决方案
- 去掉 2.0.1版本的gem,但这样解决不high
$ gem uninstall rack -v 2.0.1
- 使用 binstubs
- 用 bundle install --binstubs 替代 bundle instal
- 执行后,将会出现一个bin目录
- 用./bin 的方式启动 (如 ./bin puma -p 8989)