0
假設我有一個安裝了gems的Rails應用程序,其中安裝了bundler
。我應該使用bundle exec rails
還是bin/rails
?我應該使用bundle exec rake
還是bin/rake
?有什麼區別嗎?那些比另一個更好嗎?我應該使用`bundle exec`還是Rails的binstubs?
假設我有一個安裝了gems的Rails應用程序,其中安裝了bundler
。我應該使用bundle exec rails
還是bin/rails
?我應該使用bundle exec rake
還是bin/rake
?有什麼區別嗎?那些比另一個更好嗎?我應該使用`bundle exec`還是Rails的binstubs?
Bundle exec是一個Bundler命令。
你應該在所有的情況下都使用束exec,因爲
捆EXEC - 在捆綁的上下文中執行命令
更多信息可以在這裏找到:http://bundler.io/v1.15/bundle_exec.html
bin/rails可能會正常工作,但前提是系統上存在所有必需的gem/executables,但不包含該軟件包的作用域。
簡而言之,如果你的系統上安裝了所有的gem(比如全局的)bin/rails將會工作(但可能會產生衝突)。但是,如果您僅將它們安裝在捆綁包的範圍內,它們可能無法工作。
bundle exec
確保正在使用您的Gemfile中的寶石及其版本。
如何知道gem是否安裝在全球? –
@ x-yuri您可以執行'bundle exec gem list'來顯示包含該包的範圍的gem列表。對於bundle之外的寶石,只需要exec'gem list'。 – Negnar
我在'bundle exec gem list'的輸出中看到了'rails',然後我在'Gemfile'中降級了'rails'(結果我的系統至少有兩個版本的'rails',其中之一是在bundle中),當我運行'bin/rails --version'時,它會報告正確的('Gemfile'中的那個)。沒有衝突,沒有任何東西。我如何看出差異? –