16
A
回答
23
第一線在你具體例如bundle exec ruby foo.rb
bundle exec
對bundler/setup
未生成的環境進行了一些更改。如果您的foo.rb
從不運行子shell,或者從不嘗試在子殼中運行其他ruby可執行文件,那麼兩個版本都是等效的(它們都將正確加載捆綁的gem並且工作方式完全相同)。
與bundle exec
的整體思路是,使您能夠運行可執行文件是不是最初設計與捆綁考慮。像rspec
,rails
,rackup
。如果您的應用程序(foo.rb
)未嘗試運行可能依賴於您的軟件包的可執行文件,則兩種方式都沒有區別。因爲所有你想確認捆綁器是你加載正確的寶石,併爲此bundler/setup
完全符合您的情況預期。
在某些情況下,運行無束的exec可執行文件可以正常工作,如果可執行恰好被安裝在你的系統在任何寶石不拉:談論運行紅寶石系統可執行文件時,
從bundler docs與您的包相沖突。
但是,這是不可靠的,是相當大的痛苦的來源。即使它看起來有效,它可能在未來或另一臺機器上都不起作用。
然後從manpage of bundle exec你可以得到一些額外的線索,有的bundle exec
實際上做:
環境MODIFICATIONS
- 確保它仍然可以掏出捆綁從bundle exec(使用$ BUNDLE_BIN_PATH)調用的命令中執行
- 將目錄包含進不去的可執行文件(如導軌,RSpec的,rackup)爲您的$ PATH束
- 確保,如果捆綁在子shell調用,它使用相同的Gemfile(通過設置BUNDLE_GEMFILE)
- 添加-rbundler /設置到$ RUBYOPT,這可以確保在子shell調用Ruby程序可以看到寶石的束
所以,如果你建立在頭腦捆綁支持你的應用程序,那麼你永遠不需要bundle exec
您的應用程序。
但是,如果你需要使用其他工具加載你的應用程序代碼之前可能加載寶石它們加載你的應用程序代碼(然後可能會拉在一個錯誤的非綁定的寶石),那麼你需要使用bundle exec
。
相關問題
- 1. 捆綁exec與heroku - 是否有必要?
- 2. RequireJS:要捆綁還是不捆綁
- 3. 差異「需要捆綁/設置」
- 4. 捆綁exec的Spork錯誤?
- 5. 的Rails 3:捆綁Exec的
- 6. 捆綁執行或不執行捆綁exec
- 7. 的NSString在設置捆綁
- 8. 設置捆綁不NSUserDefaults的
- 9. 捆綁開發ENV設置
- 10. iPhone設置與UIButton捆綁
- 11. 重置捆綁器路徑?
- 12. RubyMine捆綁包/捆綁器配置錯誤
- 13. 在捆綁配置
- 14. 捆綁器問題
- 15. IOS - 困惑,在plist中,我需要設置捆綁ID
- 16. mvc4捆綁強類型捆綁
- 17. 使用MS捆綁的空捆綁
- 18. 捆綁與捆綁安裝相同嗎?
- 19. 捆綁-ManifestVersion = 2對比捆綁-ManifestVersion = 1
- 20. 捆綁和捆綁安裝的區別
- 21. 需要用javax.persistence捆綁OSGi的
- 22. maven - 需要創建耳捆綁
- 23. 什麼需要明確捆綁
- 24. 需要 '捆綁/ Capistrano的' 休息Capistrano的
- 25. 捆綁ID是否需要區分大小寫?
- 26. 反向捆綁安裝 - 無需通過捆綁包的環境
- 27. 耙子如何捆綁exec,但rails不?
- 28. 要求在AppKernel.php symfony捆綁
- 29. 問題與捆綁或寶石當我輸入「捆綁EXEC耙規範」
- 30. RequireJS捆綁包配置與捆綁模塊
很好的回答,非常感謝你! –