铁轨中间件类未定义
我创建了一个小型中间件应用程序,用于跟踪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 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论