我想添加此功能,但有点不确定如何实现它。基本上我希望能够做到的是:
访问我的网站的管理区域/ admin 单击链接以编辑主页内容 在textarea中显示/app/views/pages/_home.md的内容 对其进行更改并将其保存回来
基本上,只是不确定这是否可行,如果可能,这将如何适应我的Github回购?
亲切的问候, 尼尔
答案 0 :(得分:0)
您将遇到一些问题。
首先,您的应用程序服务器不会接收更改,因为它们在应用程序服务器启动时全部加载和缓存。如果您使用像独角兽这样的应用服务器,那么您需要向其发送一个重启信号,这将需要几秒钟的时间让新主进程启动并使您的更改生效。
您已经指出的另一个问题是,如果您使用capistrano进行自动部署,那么您的更改将在下一次部署时恢复,除非您以正常方式手动提交相同的更改,哪种方式会失败目的
通常,处理此问题的方法是将模板移动到数据库表中,这解决了这两个问题,但这意味着您唯一的编辑方式是通过UI。
如果你仍然开始着手这项工作,第一个问题就是很容易上班。只需弹出并执行适当的命令即可重新启动应用程序服务器。在我的部署中,我在script / unicorn中有一个独角兽控制脚本,它将由system('script/unicorn restart')
触发。第二个问题更加困难,因为您需要为服务器运行的用户提供ssh密钥,并且能够以该用户的身份推送到您的repo。一旦你有了,你可以进行更改,git add,git commit,最后推送。这会变得有点脏,不得不处理一个领先于已部署的分支,并且必须在能够推送之前进行拉/合并。一个可能的解决方案是在github上有一个特定的分支(即生产分支),它总是与部署的内容同步。在推送和部署之间以及在推送失败的UI上编辑某人之间仍然会有一个小窗口。如果当前部署的HEAD与github生产分支不匹配,则可以通过锁定UI编辑器来缓解这种情况,并在部署同步时将其解锁。