【问题标题】:Why use /app/lib instead of /lib in Rails?为什么在 Rails 中使用 /app/lib 而不是 /lib?
【发布时间】:2018-09-11 20:53:04
【问题描述】:

在 sidekiq 文档中,this quote 提到在与自动加载错误相关的 Rails 项目中更喜欢使用 /app/lib 而不是 /lib:

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

此外,还有:

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

我的问题是:

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

这仅对自动加载 Rails 相关对象(例如 AR 模型、控制器、作业等)有帮助吗?还是对 PORO 有帮助?

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

【问题讨论】:

  • 我认为不使用自动加载是将外部类放入lib 文件夹的原因之一。我不会尝试使用 lib 文件夹进行自动加载。我总是使用显式的require 从lib 文件夹中加载功能。

标签: ruby-on-rails ruby sidekiq


【解决方案1】:

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

要使用/lib,您需要使用autoload_paths 配置您的Rails 应用程序。 autoload_paths 还需要一些调整才能在 production 中正常工作。 Matz 本人不鼓励autoload,因为它正在处理being deprecated。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-21
    • 2017-07-14
    • 1970-01-01
    相关资源
    最近更新 更多