Rails 3.2: 为什么我的 master 分支从我的 rails4 upgrade 分支看到 capistrano-stats gem 我可以部署 master 吗?
Rails 3.2: Why does my master branch see the capistrano-stats gem from my rails4 upgrade branch and can I deploy master?
我在 rails4
b运行ch 工作了一段时间,将应用程序从 Rails 3.2 升级到 Rails 4.2。与此同时,我意识到以前合并到 master
中的一些东西从未部署过,所以我切换回 master
和 运行 cap production deploy
。
突然间,我从 capist运行o 那里得到了这个我以前从未见过的提示:
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
:
上的 capist运行o
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
存在于 rails4
b运行ch 的 Gemfile.lock
中,但不存在于 master
中。然而,在部署 master
时,即使我在 master
b运行ch 上 运行 bundle install
部署之前,我仍然会收到统计提示。
有人可以解释这是如何与 Git 一起工作的,以及此时部署 master
的后果是什么,因为它似乎从 [=15] 中看到了东西(宝石) =] b运行ch 即使我没有合并它?
如果您正在部署 master
,但您已经签出本地 git 中的 rails4
分支,您仍在使用本地配置进行部署(来自 rails4
分支)。
这是因为 Capistrano 不会检查您要在本地部署的分支,只会在您要部署到的服务器上检查并在完成之前加载配置。
更新
我们发现,运行 和没有 bundle exec
运行s 不同版本的 capistrano(bundle exec
是正确的版本)。
如果你有多个版本的capistrano,可能会选择非本地版本,但会选择最高版本。
为了解决这个问题,您可以使用 bundle binstub cap
为您的 capistrano 生成一个 binstub;之后您会看到已添加一个可执行文件(如 ./bin/cap
),如果您将 ./bin
添加到 PATH
,您将能够 运行 而无需 bundle exec
再次.
我在 rails4
b运行ch 工作了一段时间,将应用程序从 Rails 3.2 升级到 Rails 4.2。与此同时,我意识到以前合并到 master
中的一些东西从未部署过,所以我切换回 master
和 运行 cap production deploy
。
突然间,我从 capist运行o 那里得到了这个我以前从未见过的提示:
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
:
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
存在于 rails4
b运行ch 的 Gemfile.lock
中,但不存在于 master
中。然而,在部署 master
时,即使我在 master
b运行ch 上 运行 bundle install
部署之前,我仍然会收到统计提示。
有人可以解释这是如何与 Git 一起工作的,以及此时部署 master
的后果是什么,因为它似乎从 [=15] 中看到了东西(宝石) =] b运行ch 即使我没有合并它?
如果您正在部署 master
,但您已经签出本地 git 中的 rails4
分支,您仍在使用本地配置进行部署(来自 rails4
分支)。
这是因为 Capistrano 不会检查您要在本地部署的分支,只会在您要部署到的服务器上检查并在完成之前加载配置。
更新
我们发现,运行 和没有 bundle exec
运行s 不同版本的 capistrano(bundle exec
是正确的版本)。
如果你有多个版本的capistrano,可能会选择非本地版本,但会选择最高版本。
为了解决这个问题,您可以使用 bundle binstub cap
为您的 capistrano 生成一个 binstub;之后您会看到已添加一个可执行文件(如 ./bin/cap
),如果您将 ./bin
添加到 PATH
,您将能够 运行 而无需 bundle exec
再次.