铁轨中间件类未定义

发布于 2025-02-03 08:11:20 字数 1640 浏览 3 评论 0原文

我创建了一个小型中间件应用程序,用于跟踪Mailgun事件,LIB/Rails应用程序中的中间件和2个文件,一个用于MailGun跟踪Env的详细信息,另一个是Mailogger的类Maillogger,它具有初始化和调用方法。代码在

mailgun_config.rb下方(需要类文件)

    # frozen_string_literal: true
    
require 'logger'
require 'mailgun-ruby'
require 'mailgun/tracking'
require 'rack/contrib'
require_relative 'mailgun_tracking'

Mailgun::Tracking.configure do |config|
  #require MailLogger
  config.api_key = ENV['MAILGUN_API_KEY']
  config.endpoint = ENV['MAILGUN_TRACKING_ENDPOINT']
  config.on 'bounced', MailLogger.new(@app, @logger)
end
run Mailgun::Tracking::MailLogger.run!
@app.call(env)

mailgun_tracking.rb(Middleware Module类文件)

  module Mailgun::Tracking
  class MailLogger
    def initialize(app, logger) # options = {})
      @app = app
      @logger = logger
    end

    def call(env)
      start = Time.now
      elapsed_time = Time.now - start
      request = Rack::Request.new(env)
      log_message(elapsed_time, request)
    end

    private

    def log_message(elapsed_time, request)
      payload = {
        response_time_secs: elapsed_time.round(2),
        path: request.path,
        ip: request.ip,
        body: request.body
      }
      @logger.info "Logging from Mailgun: #{payload}"
      @logger.info(payload)
    end
  end
end

,除了Mailgun_config文件中未定义的Maillogger外,似乎还不错。在application.rb中有以下内容:

config.middleware.use mailgun :: tracking :: middleware ')

config.middleware.insert_after(mailgun :: tracking :: middleware,mailgun :: tracking :: maillogger,env.fetch('mailgun_api_key'),env.fetch(' mailgun_tracking_endpoint 为了修复欢迎。谢谢

I have created a little middleware app for tracking Mailgun events , in lib/middleware of a rails app, and 2 files, one for the Mailgun Tracking env details and one as a class MailLogger which has the middleware initialize and call methods. Code is below

mailgun_config.rb (requires the class file)

    # frozen_string_literal: true
    
require 'logger'
require 'mailgun-ruby'
require 'mailgun/tracking'
require 'rack/contrib'
require_relative 'mailgun_tracking'

Mailgun::Tracking.configure do |config|
  #require MailLogger
  config.api_key = ENV['MAILGUN_API_KEY']
  config.endpoint = ENV['MAILGUN_TRACKING_ENDPOINT']
  config.on 'bounced', MailLogger.new(@app, @logger)
end
run Mailgun::Tracking::MailLogger.run!
@app.call(env)

mailgun_tracking.rb (middleware module class file)

  module Mailgun::Tracking
  class MailLogger
    def initialize(app, logger) # options = {})
      @app = app
      @logger = logger
    end

    def call(env)
      start = Time.now
      elapsed_time = Time.now - start
      request = Rack::Request.new(env)
      log_message(elapsed_time, request)
    end

    private

    def log_message(elapsed_time, request)
      payload = {
        response_time_secs: elapsed_time.round(2),
        path: request.path,
        ip: request.ip,
        body: request.body
      }
      @logger.info "Logging from Mailgun: #{payload}"
      @logger.info(payload)
    end
  end
end

and seems fine except the class MailLogger is undefined in the mailgun_config file. In application.rb have this:

config.middleware.use Mailgun::Tracking::Middleware
config.middleware.insert_after(Mailgun::Tracking::Middleware,Mailgun::Tracking::MailLogger, ENV.fetch('MAILGUN_API_KEY'), ENV.fetch('MAILGUN_TRACKING_ENDPOINT'))

Its required at top of file, so any tips to fix welcome. Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文