Skip to content

0.9.0

Compare
Choose a tag to compare
@arjan arjan released this 11 Nov 10:14
· 1790 commits to main since this release

Arjan Scherpenisse (10):

  •  Add hex.pm badge
    
  •  Remove instrumentation macros, switch to decorators
    
  •  Update channel decorators documentation
    
  •  Documentation on instrumentation decorators
    
  •  Let Appsignal.{set_gauge, add_distribution_value} accept integers (#31)
    
  •  Implement Appsignal.send_error (#29)
    

Jeff Kreeftmeijer (2):

  •  Add documentation for filtered parameters (#28)
    
  •  Appsignal.Utils.ParamsEncoder.preprocess/1 handles structs (#30)
    

Upgrade notes

Instrumentation macro deprecation

The instrumented do ... end macro has been removed. Instead of writing this:

defmodule MyInstrumentedModule do
  import Appsignal.Helpers

  instrumented do
    def bar(arg) do
      # code to be instrumented
    end
    # more functions...
  end
end

you should write now:

defmodule MyInstrumentedModule do
  use Appsignal.Instrumentation.Decorators

  @decorate transaction_event
  def bar(arg) do
    # code to be instrumented
  end
  # more functions...
end

The reason for this is that the instrumented do... syntax introduced an extra indenting level for all instrumented functions, making diffs and merges large and complicated.

Channel instrumentation

The use Appsignal.Phoenix.Channel and channel_event/3 macro has been removed in favor of the new @decorate syntax. Example:

  defmodule SomeApp.MyChannel do

    use Appsignal.Instrumentation.Decorators

    @decorate channel_action
    def handle_in("ping", payload, socket) do
      {:reply, {:ok, payload}, socket}
    end
  end

You can still use the old syntax, if you really like, but note that a __MODULE__ argument needs to be passed in.