实时应用代码测试:代码修改未在前端生效

您好,

我之前在 Joomla/WordPress 上进行开发,对 Discourse 通过 Docker 进行后端文件修改的功能感到好奇。
我已阅读有关如何创建插件的文档 (How can I make my own Discourse plugins? - #2 by merefield),但暂时不想这样做,只想能够实时测试代码。

在非 Docker MVC 安装中,通过 FTP 修改文件后会立即生效,虽然我理解使用 Docker 需要重建应用程序才能永久修改,但如果想实时测试呢?

实时代码修改似乎不起作用:

例如,我想禁用匿名用户的搜索功能,所以我编辑了:
/var/www/discourse/app/controllers/search_controller.rb,在 def show 之后添加了“if current_user.present?”,并在函数底部添加了 end

令我惊讶的是,这并没有对前端产生任何影响,甚至将控制器重命名为 search_controllerold 也不会对搜索产生任何影响。

但不知何故,在 /var/www/discourse/public/images# 中重命名一张图片会在前端隐藏该图片 :)!

有人能告诉我这里是如何工作的吗?除了从镜像启动的应用程序之外,系统是否还有其他缓存版本?

谢谢

好的,我发现如果修改 ./javascripts/discourse/node_modules/.embroider/rewritten-app/ 目录下的文件,代码就会被修改。 :slight_smile: 现在感觉好多了。

1 个赞

这看起来不仅仅是一个反模式。

这很可能会在每次构建时被替换。

请查看 Documentation > Developer Guides 中的资料以及无数真实的开源示例,了解如何通过 Theme component 修改前端,并通过 #plugins 修改前端和后端。

2 个赞

谢谢分享!我会检查一下,也许将来会更认真地参与其中,但目前我只是想测试实时修改,而且不明白为什么它们不像在 Joomla/WordPress 上使用 FTP 那样容易地显示在前端。