Почему информация моего регистратора не работает на классах обслуживания, а в контроллере? - PullRequest
0 голосов
/ 11 октября 2018

Я пытаюсь отладить мои приложения.

На моем контроллере все выглядит нормально.

class AccountsController < ApplicationController
  rescue_from PaymentGateway::CreateSubscriptionServiceError do |e|
    redirect_to root_path, alert: e.message
  end
 def change_plan
    logger.info('Changing the Plan')

Но когда я пытаюсь сделать то же самое в своей папке служб:

class PaymentGateway::CreateSubscriptionService < PaymentGateway::Service
  ERROR_MESSAGE = "There was an error while creating the subscription"
  attr_accessor :user, :plan, :token, :subscription, :success

def run
 logger.info('Starting the PaymentGateway::CreateSubscriptionService.run')
    begin
      Subscription.transaction do
        create_client_subscription
        self.subscription = create_subscription
        self.success = true
      end
    rescue PaymentGateway::CreateCustomerService, 
      PaymentGateway::CreatePlanService,
      PaymentGateway::ClientError => e
      raise PaymentGateway::CreateSubscriptionServiceError,e.message

    end
  end

я получаю сообщение об ошибке:

undefined local variable or method `logger' for #<PaymentGateway::CreateSubscriptionService:0x007f2f4eaff788>

Что я делаюздесь не так?

Ответы [ 2 ]

0 голосов
/ 11 октября 2018

Похоже, что регистратор не инициализируется в папке служб.

Я думаю, что если вы инициализируете регистратор в папке служб, он должен работать.

Попробуйте: logger = Logger.new(STDOUT)

0 голосов
/ 11 октября 2018

Поскольку на всех контроллерах доступен метод с именем logger.

def logger
  ActionController::Base.logger
end

Вы можете добавить один к своим классам или просто использовать Rails.logger вместо logger.

def logger
  Rails.logger
end
...