我已经在rails4
分支机构工作了一段时间,将应用程序从Rails 3.2升级到Rails 4.2。与此同时,我意识到之前已合并到master
的某些内容从未部署过,因此我切换回master
并运行cap production deploy
。
突然间,我从capistrano得到了这个我以前从未见过的提示:
MBA:myapp david$ cpd
Would you like to enable statistics? Here is an example message we would
send:
1|2015-01-21T10:59:17-05:00|1.9.3|x86_64-darwin14.0.0|3.3.5|c52f7ecf
如上所述,我之前部署时从未收到此提示。以下是我在Gemfile.lock
上的master
的{{1}}:
capistrano (3.2.1)
i18n
rake (>= 10.0.0)
sshkit (~> 1.3)
capistrano-bundler (1.1.3)
capistrano (~> 3.1)
sshkit (~> 1.2)
capistrano-rails (1.1.2)
capistrano (~> 3.1)
capistrano-bundler (~> 1.1)
...和rails4
:
capistrano (3.3.5)
capistrano-stats (~> 1.1.0)
i18n
rake (>= 10.0.0)
sshkit (~> 1.3)
capistrano-bundler (1.1.3)
capistrano (~> 3.1)
sshkit (~> 1.2)
capistrano-rails (1.1.2)
capistrano (~> 3.1)
capistrano-bundler (~> 1.1)
capistrano-stats (1.1.1)
我立即注意到capistrano-stats
分支Gemfile.lock
中存在rails4
但master
不存在master
。但是,在部署bundle install
时,我仍然会收到统计信息提示,即使我在部署之前在master
分支上运行master
。
有人可以解释这是如何与Git一起工作的,以及部署rails4
的后果是什么,因为它似乎是从{{1}}分支看到的东西(宝石),即使我还没有合并吗?
答案 0 :(得分:1)
如果要部署master
,但已在本地git中检出rails4
分支,则仍在使用本地配置(来自rails4
分支)进行部署。
这是因为capistrano不会检查您要在本地部署的分支,只会在您部署到的服务器上,并且在此之前加载配置。
<强>更新强>
我们发现,使用和不使用bundle exec
运行会运行不同版本的capistrano(bundle exec
是正确的)。
如果您有更多版本的capistrano,可能会选择非本地版本,但最高版本将会被选中。
要解决此问题,您可以使用bundle binstub cap
为capistrano生成binstub;之后,您会看到已添加可执行文件(./bin/cap
),如果您将./bin
添加到PATH
,则可以再次运行bundle exec
。< / p>