创建新库时我应该把自定义错误 类 放在哪里?

Where should I put custom error classes when creating a new library?

我正在创建我的第一个 gem,我正在努力寻找一个地方放置我的自定义错误 类。这就是我的 gem 目前的结构:

MyGem
|-lib
 /secrets
  - manager.rb
 secrets.rb

我在根文件中添加了自定义错误 类:secrets.rb。例如:

module Secrets
  VERSION = "0.1.0"

  class DateError < StandardError; end
end

因为我是 Ruby 的新手,而且这是我第一次创建 Gem,我不确定是否有正确的地方来放置它们。

两种常见的方法

这确实没有硬性规定。然而,两个最明智的选择是:

  1. 您 gem 的主要库文件(例如 lib/secrets)。该文件由 gem 自动加载,它似乎是放置 one-liners 和适用于整个 gem.
  2. 的样板文件的合理位置
  3. 在您的 gem 的主库文件所需的 class 文件中(例如 lib/secrets/date_error.rb)。那是大多数需要的东西应该存在的地方,一致的命名约定使 long-term 维护更容易。

Ruby 尽管它非常灵活,但没有什么能阻止您将代码放在源代码树中您喜欢的任何位置。核心约束实际上是命名空间(例如,您希望异常是 Secrets::DateError 还是其他?)和代码维护,因此将 class 放在不相关的文件中,例如 lib/secrets/versions.rblib/secrets/deeply/nested/path/date_error.rb) 似乎是 less-than-ideal.