3 回答

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

TA貢獻(xiàn)1777條經(jīng)驗(yàn) 獲得超3個(gè)贊
當(dāng)你的gemfile.lock在你的機(jī)器上安裝了不同版本的gem時(shí),會(huì)出現(xiàn)這種情況。運(yùn)行rake(或rspec或其他)后,您可能會(huì)收到警告,例如:
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
無(wú)論版本差異如何,Prepending都會(huì)告訴bundler執(zhí)行此命令。但是,并不總是存在問(wèn)題,您可能會(huì)遇到問(wèn)題。
幸運(yùn)的是,有一個(gè)寶石可以解決這個(gè)問(wèn)題:rubygems-bundler。
$ gem install rubygems-bundler
$ $ gem regenerate_binstubs
然后嘗試你的耙子,rspec或其他任何東西。
- 3 回答
- 0 關(guān)注
- 1676 瀏覽
添加回答
舉報(bào)