Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 在rails应用程序中编辑文件并保存回_Ruby On Rails_Git_Markdown - Fatal编程技术网

Ruby on rails 在rails应用程序中编辑文件并保存回

Ruby on rails 在rails应用程序中编辑文件并保存回,ruby-on-rails,git,markdown,Ruby On Rails,Git,Markdown,我想添加这个功能,但有点不确定如何实现它。基本上我想做的是: 访问我的网站的管理区,地址为/admin 单击链接编辑主页内容 在文本区域中显示/app/views/pages/_home.md的内容 对其进行更改并将其保存回去 基本上,只是不确定这是否可能,如果可能,这将如何与我的Github回购协议相适应 亲切问候,, 尼尔你会遇到一些问题 第一个问题是,您的应用程序服务器不会接收更改,因为在启动应用程序服务器时,这些更改都已加载并缓存。如果您使用的是unicorn之类的应用服务器,那么您需要

我想添加这个功能,但有点不确定如何实现它。基本上我想做的是:

访问我的网站的管理区,地址为/admin 单击链接编辑主页内容 在文本区域中显示/app/views/pages/_home.md的内容 对其进行更改并将其保存回去

基本上,只是不确定这是否可能,如果可能,这将如何与我的Github回购协议相适应

亲切问候,,
尼尔

你会遇到一些问题

第一个问题是,您的应用程序服务器不会接收更改,因为在启动应用程序服务器时,这些更改都已加载并缓存。如果您使用的是unicorn之类的应用服务器,那么您需要向其发送一个重启信号,这将需要几秒钟的时间来启动新的主进程,并使您的更改生效

您已经指出的另一个问题是,如果您使用capistrano进行自动部署,那么您的更改将在下一次部署时恢复,除非您随后以正常方式手动提交相同的更改,这会破坏您的目的

一般来说,处理这个问题的方法是将模板移动到数据库表中,这可以解决这两个问题,但这意味着您唯一的编辑方法是通过UI


如果您仍然致力于实现这一目标,那么第一个问题就相当简单。只需抛出并执行适当的命令即可重新启动应用程序服务器。在我的部署中,我在script/unicorn中有一个unicorn控制脚本,它将通过
系统('script/unicorn restart')
触发。第二个问题更为棘手,因为您需要服务器运行的用户的ssh密钥,并且能够作为该用户推送到您的repo。一旦有了这些,您就可以进行更改,git add、git commit和finally push。这会变得有点脏的地方是必须处理比部署的分支早的分支,并且必须在能够推之前拉/合并。一个可能的解决方案是在github上有一个特定的分支(即生产分支),该分支始终与部署的内容同步。在推送和部署用户和编辑用户界面(推送失败)的用户之间仍然会有一个小窗口。如果当前部署的头与github生产分支不匹配,则可以通过锁定UI编辑器来缓解此问题,并在部署将其同步时将其解锁。

感谢您的回复。我想我暂时不使用这个功能,只需像往常一样更新我的内容,然后提交>推送。再次感谢!