запретить Rails регистрировать вложения электронной почты - PullRequest
23 голосов
/ 31 января 2012

Когда я отправляю электронное письмо с приложением, данные записываются в шестнадцатеричном формате и заполняют весь журнал.Есть ли способ отключить регистрацию вложений?Я знаю, что могу отключить ведение журнала с помощью config.action_mailer.logger = nil.

Ответы [ 3 ]

15 голосов
/ 30 августа 2012

К сожалению, вложения включаются в журналы, если уровень ведения журнала установлен на :debug, уровень по умолчанию для непроизводственных сред. Это означает, что с производством у вас все должно быть в порядке, но ваша среда разработки и промежуточная среда могут раздуться во время тестирования. Вы можете отключить ведение журнала для всего приложения (config.log_level = :info), но это явно не идеально.

Вы можете настроить собственный регистратор:

config.action_mailer.logger = ActiveSupport::BufferedLogger.new("mailer.log")
config.action_mailer.logger.level = ActiveSupport::BufferedLogger::Severity::INFO

Рельсы 4

config.action_mailer.logger = ActiveSupport::Logger.new("mailer.log")
config.action_mailer.logger.level = ActiveSupport::Logger::Severity::INFO

Это разделит журнал, но вы можете изолировать изменение уровня ведения журнала для почтовой программы действий.

0 голосов
/ 07 ноября 2018

Если вы по-прежнему хотите, чтобы уровень вашего журнала был отлаженным, вы можете удалить вложения из вывода журнала, переопределив класс ActionMailer LogSubscriber.Посмотрите на класс в вашем геме actionmailer и измените его соответствующим образом.Для моей установки Rails 4.2.10 соответствующий файл: gems/actionmailer-4.2.10/lib/action_mailer/log_subscriber.rb

Мой модуль:

module ActionMailer
  class LogSubscriber < ActiveSupport::LogSubscriber
    def deliver(event)
      info do
        recipients = Array(event.payload[:to]).join(', ')
        "\nSent mail to #{recipients}, Subject: #{event.payload[:subject]}, on #{event.payload[:date]} (#{event.duration.round(1)}ms)"
      end

      debug { remove_attachments(event.payload[:mail]) }
    end

  def remove_attachments(message)
    new_message = ''
    skip = false
    message.each_line do |line|
      new_message << line unless skip
      skip = true if line =~ /Content-Disposition: attachment;/
      skip = false if skip && line =~ /----==_mimepart/
    end
    new_message
  end
 end
end

Сохраните его в файле .rb в любом месте вашего приложения / папки ибудут включены.

0 голосов
/ 08 февраля 2012

в Application.rb вы можете попробовать отфильтровать параметр вложения. Я считаю, что это должно решить проблему, но я не проверял это сам

config.filter_parameters += [:attachment]  
...