我正在努力思考為什么我一直在努力解決的問題現在神奇地解決了。
我正在構建一個使用 Spotify OAuth(通過rspotifygem)的 Rails 應用程式,并且遇到了這里描述的確切問題。在旋轉我的輪子之后,我終于遇到了這個評論,建議我明確地將omniauthgem添加到我的Gemfile.
現在,這個omniauthgem 已經是Gemfile.lockfor的依賴項了omniauth-oauth2。正如鏈接評論所建議的那樣,我將其包含omniauth在我的 Gemfile 中,現在我的問題似乎已解決,但我真的不知道為什么。
Gemfile在這種情況下,為什么在您的解決方案中包含 gem 會導致railtie 問題?- 如果 gem 已經作為依賴項安裝(根據
Gemfile.lock),這不是安裝了給定 gem 的證據嗎?如果說,gem_foo被列為依賴關系Gemfile.lock,我添加gem_foo的Gemfile,然后運行捆扎機,如何Rails的解釋這種變化?
uj5u.com熱心網友回復:
這與gems捆綁程式如何加載有關。Bundler.require 需要列出的 gemsGemfile但不需要它的依賴。它由庫來要求/加載其依賴項。
提到的問題發生在omniauth沒有明確添加到 Gemfile 時,因此 bundler 不需要它。
但是由于omniauth-rails_csrf_protection假設ominauth已經需要,所以當用戶只添加omniauth-rails_csrf_protection但不添加omniauth到 Gemfile時它會出錯。
我已經為這個問題創建了一個可能的解決方案https://github.com/cookpad/omniauth-rails_csrf_protection/pull/13
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/330649.html
