3 回答

TA貢獻1765條經驗 獲得超5個贊
bundle exec
是一個Bundler命令,用于在當前包(您目錄的Gemfile中的一個)的上下文中執行腳本。rake db:migrate
是db是命名空間的腳本,migrate是定義的任務名稱。
因此,在當前包的上下文中bundle exec rake db:migrate
使用命令執行rake腳本db:migrate
。
至于“為什么?” 我將從捆綁頁面引用:
在某些情況下,
bundle exec
如果可執行文件恰好安裝在您的系統中并且沒有引入任何與您的軟件包沖突的gem,那么運行可執行文件可能無效。然而,這是不可靠的,并且是相當痛苦的根源。即使看起來它有效,它可能在將來或在另一臺機器上不起作用。

TA貢獻1777條經驗 獲得超3個贊
當你的gemfile.lock在你的機器上安裝了不同版本的gem時,會出現這種情況。運行rake(或rspec或其他)后,您可能會收到警告,例如:
You have already activated rake 10.3.1, but your Gemfile requires rake 10.1.0. Prepending "bundle exec" to your command may solve this.
bundle exec
無論版本差異如何,Prepending都會告訴bundler執行此命令。但是,并不總是存在問題,您可能會遇到問題。
幸運的是,有一個寶石可以解決這個問題:rubygems-bundler。
$ gem install rubygems-bundler
$ $ gem regenerate_binstubs
然后嘗試你的耙子,rspec或其他任何東西。
- 3 回答
- 0 關注
- 1663 瀏覽
添加回答
舉報