簡體   English   中英

解決gem版本不兼容

[英]Resolving gem version incompatibility

我是Ruby,Rails和gem管理的新手。 我注意到的一件事是,每當我運行bundle install (甚至在項目目錄中)時,似乎也會安裝gem,這也會影響其他基於gem的Rails項目。

例如,假設在一個基於gem的Rail項目(從gemfile安裝了一堆gem)中運行bundle install之后,我遇到了gem不兼容的問題。 現在,這些問題也將在所有其他基於gem的項目中體現出來,並且在我每次嘗試rackup都會表現出來

我的問題是:
1)是否可以將這種損壞(gem版本不兼容)本地化到當前項目,而不會影響其他項目?
2)是否有一個好的方法來獲取一組兼容的gem,或者是逐個查看gem依賴關系(查看樹)並找出兼容的gem的唯一方法? 我似乎在此上浪費了很多時間,如果我修復某個問題,其他事情似乎會中斷。

請讓我知道我在這里缺少什么,或將我指向資源。

謝謝

聽起來您好像缺少使用bundle exec

說明該命令執行該命令,使Gemfile(5)中指定的所有gem都可以在Ruby程序中使用。

本質上,如果您通常運行rspec spec/my_spec.rb類的東西,並且想要使用Gemfile(5)中指定並通過bundle install(1)安裝的bundle exec rspec spec/my_spec.rb ,則應該運行bundle exec rspec spec/my_spec.rb

bundle install會將gems安裝到$GEM_HOME ,這可由使用相同ruby的任何應用程序共享,並且可能導致安裝了同一gem的多個版本(這是正常現象)。 如果您還不使用bundle exec只加載Gemfile中指定的gem版本,則可能會出現不兼容錯誤或意外行為,因為ruby不知道需要哪個版本的特定gem。


RVM,rbenv和其他ruby版本管理器是有用的工具,既可以隔離每個項目的gem(在同時使用bundler時也不是必須的),並且允許在同一台計算機上安裝多個ruby版本(bundler不能處理)並且在開發具有不同Ruby版本要求的多個應用程序時非常有用)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM