場景:
以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)