问题描述
我正在创建我的第一个gem,并且正在努力寻找一个放置自定义错误类的地方。这就是我目前的宝石结构:
MyGem
|-lib
/secrets
- manager.rb
secrets.rb
module Secrets
VERSION = "0.1.0"
class DateError < StandardError; end
end
因为我是Ruby的新手,这是我第一次创建Gem,所以不确定是否有放置这些宝石的正确位置。
解决方法
两种常见方法
对此确实没有硬性规定。但是,两个最明智的选择是:
- 您的gem的主库文件(例如
lib/secrets
)。该文件会由gem自动加载,这似乎是放置适用于整个gem的单行代码和样板的合理位置。 - 在gem的主库文件中所需的类文件中(例如
lib/secrets/date_error.rb
)。那是大多数必需的东西应该存在的地方,一致的命名约定使长期维护变得更容易。
Ruby非常灵活,没有什么可以阻止您将代码放置在源代码树中的任何位置。核心约束实际上是命名间隔(例如,您是否希望异常是Secrets::DateError
或其他东西?)和代码维护,因此将类放入不相关的文件中,如lib/secrets/versions.rb
或lib/secrets/deeply/nested/path/date_error.rb
)似乎不理想。