Как я могу писать в Rails logger внутри моего драгоценного камня

У меня есть драгоценный камень, который я написал, и я использую его внутри своего приложения rails.

Я хочу писать в rails logger из моего драгоценного камня, но, очевидно, стандартный рельсовый логгер там не существует.

Каков правильный способ достичь того, что я хочу сделать?

Ответ 1

В то время как вы можете использовать Rails.logger, вы можете захотеть сделать логгером, что ваш драгоценный камень использует настраиваемый, то есть разрешить пользователям устанавливать MyGem.logger для любого регистратора, который они хотят.

Вы можете по умолчанию использовать что-то, что просто пишет в stdout, в приложении rails вы можете установить MyGem.logger = Rails.logger в инициализаторе. Люди, которые используют ваш драгоценный камень за пределами рельсов, тоже могут это сделать.

Ответ 2

Как говорит Фредерик Чунг, вы должны использовать регистратор имен для вашего драгоценного камня: MyGem.logger.

Затем установите его в журнал Rails в Railtie, чтобы ваш драгоценный камень хорошо работал как внутри, так и снаружи Rails.

module MyGem
  class Railties < ::Rails::Railtie
    initializer 'Rails logger' do
      MyGem.logger = Rails.logger
    end
  end
end