我試圖找出是否有可能我遇到的錯誤可能與我使用rbenv
但我的團隊的其餘成員使用RVM
這一事實有關。如果明確指定了項目的Ruby版本,是否可以從RVM更改爲rbenv會引入錯誤?
我一直在想的是,對於特定的Ruby,由rbenv
/RVM
創建的可執行文件是否相同。如果分別在.ruby_version
和Gemfile
中分別明確指定了Ruby版本和gem版本,那麼rbenv
和RVM
是否有可能會對代碼進行不同解釋或者我希望得到相同的結果?
UPDATE。我所遇到的實際錯誤的描述被要求,所以在這裏。
本質上,該項目使用dotenv
gem(和dotenv-rails
)讀取根目錄中的.env
文件。其中兩個值(salt和IV)是包含換行符的Base64編碼字符串。在解碼過程中的某個點,每個換行符前面都會加上一個額外的反斜槓,導致解密失敗。問題是,dotenv
gem似乎正在正確地讀取文件(即在Rails控制檯中運行Dotenv.load
顯示正確解析字符串),所以它是堆棧中更深的一些其他gem或擴展引起的問題。我們還沒有確定它。
我們速戰速決是gsub
的雙重逃脫換行符(類似於this foreman
bug fix,但球隊的一些成員不希望因爲他們相信這是造成rbenv
的環境問題進行合併。我不認爲這樣的話,但我想知道如果這是一個可能性之前,我嘗試卸載rbenv
並切換到RVM
,我真的不想做的事。
更新#2。問題解決了!
我沒有結束切換到RVM
,但無濟於事。但最終確實成爲一個環境問題。
這是因爲我的默認外殼是zsh
,但我的團隊大部分使用bash
,我們使用heroku local:run
來啓動本地開發環境。事實證明,它使用你的默認shell環境。即使您使用不同的外殼進行呼叫(例如bash
)。然而,rails console
和heroku local:run rails console
默認使用sh
。 zsh
正在處理的env變量的輸入與bash
和sh
不同。
可能是一樣的......你爲什麼不說出你得到的錯誤是什麼? –
這有點複雜,我真正想要的是有人深入解釋,如果RVM和rbenv具有不同的生成過程導致不同的可執行文件,或者在建立Ruby可執行文件時他們實際上做了同樣的事情。但我給這個朋友發了一封電子郵件,他也想知道這個錯誤是什麼,所以一旦我把它輸入,我會更新我的問題。 –