# 在插件中覆盖 user\_guardian.rb（无需 fork！）

**URL:** <https://meta.discourse.org/t/overriding-user-guardian-rb-in-a-plugin-no-fork-necessary/174839>\
**Category:** Development\
**Created:** [2021 年1 月 3 日 03:36 UTC](https://meta.discourse.org/t/overriding-user-guardian-rb-in-a-plugin-no-fork-necessary/174839 "2021-01-03T03:36:43Z")\
**Posts on this page:** 1\
**Showing post:** 1

<div class="post-metadata">

作者： ![leighno5](https://avatars.discourse-cdn.com/v4/letter/l/e19b73/32.png) [@leighno5](https://meta.discourse.org/u/leighno5)\
发布日期： [2021 年1 月 3 日 03:36 UTC](https://meta.discourse.org/t/overriding-user-guardian-rb-in-a-plugin-no-fork-necessary/174839/1 "2021-01-03T03:36:44Z")

</div>

嘿，抱歉问这个新手问题。我一直在阅读文档，但还是需要一些指导。

我 fork 了 Discourse 并进行了自己的修改，希望基于这些修改进行自己的部署。[贡献指南](https://meta.discourse.org/t/beginners-guide-to-install-discourse-on-ubuntu-for-development/14727)介绍了如何进行修改并提交 PR，但在这个场景中，我并不想提交 PR。我只是希望基于我的微小修改，让 Discourse 能够正常安装运行。我原以为方法是将这一行指向我自己的仓库：

> <https://github.com/discourse/discourse_docker/blob/master/image/base/Dockerfile#L143>

我这样做了并执行了安装，但我的修改并没有生效，显然我哪里做错了。有什么建议吗？谢谢！

编辑：  
为了透明起见，也以防有人有更简单的方法，我实际上只是想允许匿名用户在进入匿名模式时更改他们的用户名。这很简单，只需将这一行中的 `false` 改为 `true`：

> <https://github.com/discourse/discourse/blob/main/lib/guardian/user_guardian.rb#L45>

如果有更好的方法，我非常乐意听取。但目前我只需要启用这个功能。我擅长 Python、Java 以及许多其他后端技术，但对 Ruby/JavaScript/HTML 等几乎一无所知。

编辑 2：  
根据[我在其他地方看到的一篇帖子](https://meta.discourse.org/t/cant-change-repo-in-discourse-docker/49376/5?u=leighno5)，我按以下方式更新了 app.yml：

```
run:
- exec:
 cd: /var/www/discourse
 cmd:
    - sudo -u discourse git remote set-url origin https://github.com/my/forked/discourse.git
    - sudo -u discourse git fetch origin
    - sudo -u discourse git checkout origin/master

```

重新构建应用后仍然没有效果。应用可以正常启动，但我的修改似乎并未生效。

---

_[View the full topic](https://meta.discourse.org/t/overriding-user-guardian-rb-in-a-plugin-no-fork-necessary/174839)._
