单文件git部署到服务器

3
我正在使用Capistrano部署Rails应用程序,如何在不进行新发布的情况下更新服务器上的一个文件?
例如:
假设我只对我的UserController.rb进行了更改,并将其提交到git服务器,那么我该如何将此更新获取到服务器上而不进行新的部署。

1
部署系统的整个意义不就在于你要真正使用它,而不是试图绕过它吗? - Andrew Aylett
@Andrew:感谢您的评论,但对我来说仍然不够清晰。简要来说,我们应该为仅一个文件更新执行整个部署过程吗? - Neel
3个回答

11

Capistrano有一个部署任务,可以更新单个文件,而不必进行完整的部署。

cap -e deploy:upload

在您的情况下,可能会像这样:

cap deploy:upload FILES='app/controllers/UserController.rb'

你可能还需要重启你的应用程序

cap deploy:restart

同这里:http://www.frick-web.com/en/blogposts/capistrano-single-file-deployment - 完美运行! - Matthias

2
你应该通过Capistrano发布新版本。
部署工具的目的是为了给你可重复的结果,并帮助你跟踪你已经部署的内容。为了修复一个小问题而规避这个过程,意味着你将失去这两个优势。如果你认为为一个简单的修改运行整个部署流程太繁琐,那么你可能应该致力于简化这一过程(或确保你从不需要进行简单的修复——祝你好运!)。
实用上,我相信许多人会在服务器上手动编辑文件。出于上述原因,这种做法并不推荐。如果你认为权衡利弊是值得的,那就由你决定 :)。
免责声明:我不是Ruby开发人员,也从未使用过Capistrano,我的建议是通用的,而非针对特定技术。也许有一种特殊的方法可以将小的更改推送到系统中,如果有的话,我希望有人能指出它……

我知道部署对于跟踪发布很有用。但是我仍然想知道如何在不使用任何FTP客户端的情况下只更改文件。如果您有任何想法,请帮助我...顺便说一句,非常感谢您的回复。 - Neel
如果您正在尝试将某些内容推送到测试或临时服务器,那么您可能不太关心回滚或跟踪发布的情况。也就是说,您没有触及到关键任务的服务器,并且您可能只想快速修复拼写错误或其他问题,而无需等待庞大的部署时间,这可能需要相当长的时间,具体取决于您的应用程序。但总的来说,我同意它应该非常明智地使用,而且在生产环境中几乎不使用。 - Sam Figueroa

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接