为什么在 Rails 中使用 /app/lib 而不是 /lib?

kle*_*ine 5 ruby ruby-on-rails sidekiq

在 sidekiq 文档中,有一段关于在与自动加载错误相关的 Rails 项目中更喜欢使用而不是使用的引用/app/lib/lib

lib/ 目录只会引起痛苦。将代码移动到 app/lib/ 并确保里面的代码遵循类/文件名约定。

此外,还有:

不要在 autoload_paths 或eager_load_paths 中配置额外的路径。这是一个黑客;遵守约定!app/ 下的任何目录都可能包含 Ruby 代码,您无需显式配置任何内容。

我的问题是:

这些陈述是否有道理,即使用/app/lib比使用更好/lib

这是否仅有助于自动加载 Rails 相关的对象(例如 AR 模型、控制器、作业等)?或者它也会帮助 PORO?

这些评论是否只有特定的上下文才有意义?

Jos*_*Cho 8

以我的经验app/lib更容易使用。你可以坚持Class MathFunction使用类似的东西并在其他地方(例如控制器或模块)使用MathFunction.sqrRoot.

要使用,/lib您需要使用autoload_paths. autoload_paths还需要一些调整才能在生产中正常工作。Matz 本人不鼓励,autoload因为它正在被弃用

我唯一需要使用该lib目录的时间是制作自定义 rake 任务。否则我坚持app/lib