创建一个插件以覆盖 QUERY_RESULT_MAX_LIMIT

我天真地尝试创建一个插件(我以前从未做过,除了几年前完成过插件教程),以覆盖 DataExplorer 模块中设置的限制,但未能成功。\n\n我的方法对吗,还是完全错误?\n\nhttps://github.com/tkrunning/x-discourse-data-explorer-max/blob/master/plugin.rb\n\n注意:我将 QUERY_RESULT_DEFAULT_LIMIT 设置为 1,以便更容易测试自定义限制是否生效。

我不建议在这里使用插件。

而是提交一个 PR 来添加一个 GlobalSetting(它由环境变量支持)。

5 个赞

在过去的两年里,这似乎对任何人来说都不是一个高优先级的问题,但我今天需要它,并通过在容器内手动编辑文件来解决了它。

一种变通方法是在 app.yml 中添加类似以下内容:

  after_bundle_exec:
   - replace:
        filename: "/var/www/discourse/plugins/discourse-data-explorer/plugin.rb"
        from: /QUERY_RESULT_MAX_LIMIT = 10_000/
        to: QUERY_RESULT_MAX_LIMIT = 100_000

但这看起来像是一个 PR,它会在 plugin.rb 中添加类似以下内容:

GlobalSetting.add_default(:query_result_max_limit, 10000)

然后将上面的模块更改为类似以下内容:

  QUERY_RESULT_MAX_LIMIT = GlobalSetting.query_result_max_limit || 10_000

仅此而已吗?

2 个赞

关闭……

我将停止使用常量,而是到处使用 GlobalSetting.query_result_max_limit,您已经配置了一个默认值,为什么还要配置两次。

但是,如果他们设置 GlobalSetting,就需要有一个默认值?

您在 plugin.rb 中设置了它。

哦哦哦。我猜 “add_default” 确实会添加一个默认值。 :person_shrugging:

哎呀。

所以添加默认的 GlobalSetting 并将所有对旧常量的引用替换为 GlobalSetting。

明白了。

我会看看我能做什么。