我没有在我的应用程序中使用最新的Rails gem,而是希望将代码本地放在我自己的git存储库中,这意味着将它放在vendor/rails
中。
有两种方法可以执行此操作:下载我要运行的特定分支/标记的源代码并将其提交到我的存储库,或使用git子模块。
子模块似乎是一种自然的方式,但不是每次克隆存储库时都必须手动检查要使用该子模块的分支(否则你只会得到) master
)?使用这种方法会对Capistrano部署产生影响吗?
答案 0 :(得分:1)
我建议冻结一个版本:
rake rails:freeze:edge RELEASE=2.3.3
有一个2-3稳定的git分支,但我使用它的时间很糟糕。子模块有点痛苦。工具Braid非常好,但我喜欢用发行版冻结Rails。
Capistrano将更加缓慢地部署您的代码(整个Rails代码库都在那里),但是capistrano本身和您的生产设置不需要改变。
祝你好运!答案 1 :(得分:1)
Capistrano支持子模块,如果您通过remote_cache进行部署,则部署非常快速。在您的deploy.rb中,您需要:
set:git_enable_submodules,true set:deploy_via,:remote_cache
当您询问有关克隆存储库时,我不太清楚您的意思。一旦将Rails作为子模块出售,就可以将其固定到特定的提交/标记/分支。这会在您的仓库中存储一种分布式符号链接(至少就是我的想法),指向有问题的Rails提交。当你克隆你的仓库时,那个提交的树也会被自动拉下来(我想!)。
几个月前我自己经历过这个并在这里写下来。它对我有用。http://blog.airbladesoftware.com/2009/4/28/how-to-vendor-rails