2

我刚开始了解 Rails 部署,如果这个问题听起来很愚蠢,请原谅我。我(在我的本地机器上)创建了一个 rails 应用程序,对其进行了修改,启动了 git,将其推送(源 -> 主到私人仓库),然后将其克隆到 VPS 上。但是,在那之后,由于服务器的特殊性,我不得不修改服务器上的几个文件,现在 repos 显然不匹配。我想开始使用 Capistrano,但事实上,我无能为力(我什至没有赶上本地机器上的变化)。所以,我有几个问题。

a) 最好的解决方法是什么?我可以删除 github 存储库,然后通过从 VPS 推送创建另一个并在我的本地计算机上克隆它吗?如果是这样,我应该先“删除”(删除 .git 文件夹)服务器上的存储库吗?或者是将应用程序目录复制到本地计算机然后再次执行所有这些的最佳方法?

b) 就我而言,服务器和开发机器之间唯一不同的文件是 database.yml 文件,我是否必须将其添加到 .gitignore 中,如果是,是否会在下一个被删除我什么时候从主人那里拉变化?

c)如果(一开始)我将它从 VPS 推送到 github 作为源,我是否可以在之后更改角色,因为每次我从本地机器推送更改到主服务器时它都会更改?

d) 如果有另一种方法可以自动提取更改,那么使用 Capistrano 是否有意义(我听说有些人以某种方式使用提交挂钩)?因为此时我只想让 VPS 上的 app 文件夹与 github 上的内容保持最新,而 capfile 和 deploy.rb 似乎提供了太多选项。一点都不优雅。

感谢您的关注,祝您有美好的一天。此致,尤金。

4

1 回答 1

0

a),您不能将组合差异作为差异文件并应用于本地代码吗?或者只是从那里提交?然后,您将在 github 存储库中进行更改。(忽略暴露私人信息的更改,git add -p在关键文件上使用)

对于 b),database.yml 文件已配置为每个环境(开发/生产)具有不同的配置。如果您需要更多内容,可以使用 ERB 读取环境变量(在生产机器中设置它们):

无法访问“database.yml”文件中的环境变量

另一方面,如果将 database.yml 添加到被忽略的文件中,则需要其他方式来生成它。

c) 对我来说没有意义。VPS 的仓库将配置一个默认的远程仓库,您的本地仓库也是如此,您可以从任何您想要的地方推送和拉取。

d) capistrano 已经足够好了,记住不要用很多钩子等使配置过载,这可能会变得难以管理。通过 capistrano 部署只需几秒钟,我不会担心。

于 2012-10-08T12:46:03.900 回答