Skip to content

Instantly share code, notes, and snippets.

@lardcanoe
Created September 1, 2016 02:37
Show Gist options
  • Save lardcanoe/88a70694e24549fce841b590d02dc41d to your computer and use it in GitHub Desktop.
Save lardcanoe/88a70694e24549fce841b590d02dc41d to your computer and use it in GitHub Desktop.

Revisions

  1. lardcanoe created this gist Sep 1, 2016.
    31 changes: 31 additions & 0 deletions rollbar_transform.rb
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,31 @@
    def transform_payload(opts)
    ex_msg = opts[:payload]['data'][:body][:trace][:exception][:message] rescue nil
    if ex_msg =~ /#<(.*)(:0x[a-f0-9]{8})>$/
    # Convert
    # "undefined method `blow_up!' for #<Customer:0x7b417d08>"
    # to
    # "undefined method `blow_up!' for #<Customer>"
    # to prevent rollbar storms when each message has a different hash
    opts[:payload]['data'][:body][:trace][:exception][:message].gsub! $2, ''
    end

    frames = opts[:payload]['data'][:body][:trace][:frames] rescue nil
    frames.each do |f|
    # Convert '/engine-5b4dd9344243/' to '/engine/' to prevent rollbar from creating new items after each update
    if f[:filename] =~ /(\-[0-9a-z]{12})\//
    f[:filename].gsub $1, ''
    end

    # This next one strips out the unique id in JRuby land that is in the first frame
    # "org/jruby/gen/InterfaceImpl725942136.gen"
    if f[:filename] =~ /InterfaceImpl([\d]{8,12})\.gen/
    f[:filename].gsub $1, ''
    end

    # This is for our web app, which has the commit in the path, and also causes a new rollbar after each deploy
    # "/home/user/app/releases/c4c9ac2c2e35a3e9b62a77f5105c22862726b701/Rakefile"
    if f[:filename] =~ /releases\/([0-9a-f]{36,44})\//
    f[:filename].gsub $1, 'redacted-commit-id'
    end
    end if frames
    end