Куда я должен поместить пользовательские классы ошибок при создании новой библиотеки?

#ruby #rubygems

#ruby #rubygems

Вопрос:

Я создаю свой первый 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:

Два распространенных подхода

На самом деле в этом нет жесткого правила. Однако два наиболее разумных варианта:

  1. Основной файл библиотеки для вашего gem (например lib/secrets ). Этот файл автоматически загружается драгоценным камнем, и кажется разумным поместить однострочники и шаблоны, которые применяются ко всему драгоценному камню.
  2. В файле класса, который требуется из файла основной библиотеки для вашего gem (например lib/secrets/date_error.rb ). Именно там должно находиться большинство необходимых вещей, а согласованное соглашение об именовании упрощает долгосрочное обслуживание.

Ruby настолько гибкий, насколько это возможно, что ничто не мешает вам размещать код в любом месте вашего дерева исходных текстов. Основными ограничениями на самом деле являются пространство имен (например, вы хотите, чтобы исключение было Secrets::DateError или что-то еще?) и обслуживание кода, поэтому помещение класса в несвязанный файл, такой как lib/secrets/versions.rb или lib/secrets/deeply/nested/path/date_error.rb ), казалось бы, было бы неидеальным.