{"record":{"id":"a50642bffbe474ee","repo":"sj26/mailcatcher","slug":"please-submit-this-as-an-issue-at-https-gith","errorCode":null,"errorMessage":"    Please submit this as an issue at https://github.com/sj26/mailcatcher/issues","messagePattern":"    Please submit this as an issue at https://github\\.com/sj26/mailcatcher/issues","errorType":"console","errorClass":null,"httpStatus":null,"severity":"info","filePath":"lib/mail_catcher.rb","lineNumber":64,"sourceCode":"  end\n\n  def browse url\n    if windows?\n      system \"start\", \"/b\", url\n    elsif which? \"open\"\n      system \"open\", url\n    end\n  end\n\n  def log_exception(message, context, exception)\n    gems_paths = (Gem.path | [Gem.default_dir]).map { |path| Regexp.escape(path) }\n    gems_regexp = %r{(?:#{gems_paths.join(\"|\")})/gems/([^/]+)-([\\w.]+)/(.*)}\n    gems_replace = '\\1 (\\2) \\3'\n\n    puts \"*** #{message}: #{context.inspect}\"\n    puts \"    Exception: #{exception}\"\n    puts \"    Backtrace:\", *exception.backtrace.map { |line| \"       #{line.sub(gems_regexp, gems_replace)}\" }\n    puts \"    Please submit this as an issue at https://github.com/sj26/mailcatcher/issues\"\n  end\n\n  @@defaults = {\n    :smtp_ip => \"127.0.0.1\",\n    :smtp_port => \"1025\",\n    :http_ip => \"127.0.0.1\",\n    :http_port => \"1080\",\n    :http_path => \"/\",\n    :messages_limit => nil,\n    :verbose => false,\n    :daemon => !windows?,\n    :browse => false,\n    :quit => true,\n  }\n\n  def options\n    @@options\n  end","sourceCodeStart":46,"sourceCodeEnd":82,"githubUrl":"https://github.com/sj26/mailcatcher/blob/18a9cb7a79b321b2bcb51608dd793ea51255189e/lib/mail_catcher.rb#L46-L82","documentation":"The closing line of log_exception (lib/mail_catcher.rb:64): after printing context, exception, and backtrace, MailCatcher asks you to submit the report as a GitHub issue. It means the failure was unexpected enough that the library has no built-in remedy — it only guarantees the process keeps running (the callers rescue-and-continue).","triggerScenarios":"Printed after every exception funneled through log_exception: message-persistence failures in MailCatcher::Smtp#receive_message and websocket send failures in the /messages WS handler. You see it whenever either rescue fires, even for benign causes like a disconnected browser.","commonSituations":"Deciding whether an intermittent `Error sending message through websocket` report is worth reporting (usually not — it's a closed client); preparing a bug report for a repeatable `Error receiving message` crash; pasting the block into a GitHub issue after a gem upgrade broke mail storage.","solutions":["Judge reportability by the Exception line: connection/disconnect classes (EPIPE, IOError) are noise; SQLite3 or parse errors that reproduce on the latest mailcatcher release are worth filing.","Before filing, reproduce on the newest version (`gem update mailcatcher`) and with `--foreground --verbose`.","File at https://github.com/sj26/mailcatcher/issues including all four printed lines (context, exception, backtrace) plus the sender/recipient shape and Ruby/gem versions.","If it stems from an incompatible sqlite3/mail version, fix locally by pinning rather than reporting."],"exampleFix":null,"handlingStrategy":"fallback","validationCode":null,"typeGuard":null,"tryCatchPattern":"# Wrap your own embedding path; only surface the report-worthy subset to GitHub\nbegin\n  MailCatcher::Mail.add_message(msg)\nrescue => e\n  reportable = !(e.is_a?(IOError) || e.is_a?(Errno::EPIPE))\n  warn \"submit-as-issue candidate: #{e.class}: #{e.message}\" if reportable\nend","preventionTips":["Filter disconnect-class exceptions out before considering an issue; they are client noise.","Check existing issues with the exception line before filing — most recurring reports are known sqlite3/encoding bugs.","Include Ruby version, mailcatcher version, and gem versions of frames in the rewritten backtrace when filing."],"tags":["support","issue-reporting","diagnostics","github"],"backgroundTag":"crash-report-submission","analyzedSha":"18a9cb7a79b321b2bcb51608dd793ea51255189e","analyzedAt":"2026-08-21T18:56:10.605Z","schemaVersion":2},"datasetVersion":"2026-08-21T23:17:16.201Z"}