#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:
Два распространенных подхода
На самом деле в этом нет жесткого правила. Однако два наиболее разумных варианта:
- Основной файл библиотеки для вашего gem (например
lib/secrets
). Этот файл автоматически загружается драгоценным камнем, и кажется разумным поместить однострочники и шаблоны, которые применяются ко всему драгоценному камню. - В файле класса, который требуется из файла основной библиотеки для вашего gem (например
lib/secrets/date_error.rb
). Именно там должно находиться большинство необходимых вещей, а согласованное соглашение об именовании упрощает долгосрочное обслуживание.
Ruby настолько гибкий, насколько это возможно, что ничто не мешает вам размещать код в любом месте вашего дерева исходных текстов. Основными ограничениями на самом деле являются пространство имен (например, вы хотите, чтобы исключение было Secrets::DateError
или что-то еще?) и обслуживание кода, поэтому помещение класса в несвязанный файл, такой как lib/secrets/versions.rb
или lib/secrets/deeply/nested/path/date_error.rb
), казалось бы, было бы неидеальным.