2016-03-04 41 views
0

我是Rails的新手,並希望使用Capistrano將我的應用部署到Ubuntu 14。有人可以向我解釋什麼是binstubs以及他們是否需要部署我的Rails應用程序?什麼是Capistrano binstubs?

回答

2

binstub是一個可執行腳本,它封裝了一個Ruby命令以確保使用該命令的特定版本。

binstubs有時是必需的原因是因爲給定的命名Ruby命令可以引用許多不同的東西,所以你不能100%確定該名稱是指什麼。在部署中,可預測性非常重要:您希望100%確定正在運行的代碼,特別是在生產環境中。

例如,考慮名爲rails的命令。您可能安裝了多個Rails版本。事實上,每次您升級到最新的修補程序版本以進行安全修復時,這都是您要安裝的另一個新版本。最重要的是,您也可以安裝多個版本的Ruby。

那麼當你運行命令rails時,哪個版本的Ruby被使用?哪個版本的Rails?

binstub使這個決定是明確的。這個想法是,你創建一個特殊的腳本,並將其放置在項目的bin目錄中,比如bin/rails。該腳本使用Bundler來保證使用正確版本的Rails。當您運行bin/rails時,您會得到該保證。 (當你生成一個新的Rails項目時,Rails實際上爲你創建了這個和其他的binstubs。)

無論如何,從技術上講,只要你使用bundle exec rails就不需要這些binstubs。 bundle exec包裝本質上與binstub做同樣的事情。

如果您使用與capistrano/bundler寶石組合capistrano/rails寶石(確保兩者在你的Capfile),然後Capistrano的總是會使用bundle exec,你會不會擔心創建自己的binstubs。

相關問題