是否支持加载插件中定义的 rake 任务?

我需要能够在 Discourse 论坛上运行自定义任务。是否有办法加载插件中定义的 Rake 任务,以便在生产环境中使用?

1 个赞

我认为这应该可行。只需将它们放在插件的同一目录中,就像它们在核心中的位置一样。

我过去曾这样做过,创建一个在另一个任务之后运行的 rake 任务,但尚未创建独立的任务。

4 个赞

没错,这确实有效。起初它似乎对我没用,所以我才问了这个问题,但我又试了一次,第一次就成功了。

我在插件的 lib/tasks 中添加了 rake 任务。我想确认一下,这对其他偶然遇到这个问题的人是否也有效。

4 个赞

有人遇到过 lib/tasks 中的 rake 任务执行两次的问题吗?我们的 rake subscriptions:procourse_convert 似乎执行了两次。

https://github.com/ryan-hyer/discourse-subscriptions/blob/master/lib/tasks/procourse_memberships.rake

2 个赞

@kimardenmiller,你有没有找到你的 rake 任务为什么会执行两次的答案?

1 个赞

我认为这可能是在两个地方声明了同一个方法,导致它执行了两次。未经证实,但请检查一下这一点。

1 个赞

编辑:我认为我已经弄清楚这是如何发生的。

这并不真正遵循约定,或者说也许是太遵循了。

问题在于如果您在 plugin.rb 中引用 rake 文件,它似乎会运行两次,但即使您不引用它,rake 任务也会被包含,因此无需在初始化期间加载它。

@frank.manuel

1 个赞

据我所知,这里没有特定于 discourse 的逻辑。我猜想,如果你为你的插件定义了一个 ::Rails::Engine,那么任务文件就会被自动加载?

1 个赞