我正在尝试调试我的应用程序。
在我的控制器上,一切看起来都很好。
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')
但是当我尝试在我的services文件夹中执行相同的操作时:
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>
我在这里做错了什么?
答案 0 :(得分:1)
因为在所有控制器上都有一种称为logger
的方法。
def logger
ActionController::Base.logger
end
您可以将一个添加到您的班级中,也可以使用Rails.logger
代替logger
。
def logger
Rails.logger
end
答案 1 :(得分:0)
好像记录器没有在您的服务文件夹中初始化。
我认为,如果在服务文件夹中初始化记录器,则它应该可以工作。
尝试以下操作:logger = Logger.new(STDOUT)