Rails 3.2:为什么我的主分支从我的rails 4升级分支中看到capistrano-stats gem,我可以部署master吗?

时间:2015-01-21 16:09:57

标签: ruby-on-rails ruby git gem capistrano

我已经在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中存在rails4master不存在master。但是,在部署bundle install时,我仍然会收到统计信息提示,即使我在部署之前在master分支上运行master

有人可以解释这是如何与Git一起工作的,以及部署rails4的后果是什么,因为它似乎是从{{1}}分支看到的东西(宝石),即使我还没有合并吗?

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>