From 7982c236c191bfb896bb0cdfc3d464e8b07a9979 Mon Sep 17 00:00:00 2001
From: Uku Taht <uku.taht@gmail.com>
Date: Fri, 23 Apr 2021 11:56:41 +0300
Subject: [PATCH] Better Sentry tracking

---
 Dockerfile                           | 4 +++-
 config/runtime.exs                   | 4 +++-
 lib/plausible/application.ex         | 2 +-
 lib/plausible_web/endpoint.ex        | 2 +-
 lib/plausible_web/plugs/auth_plug.ex | 2 +-
 mix.exs                              | 3 ++-
 6 files changed, 11 insertions(+), 6 deletions(-)

diff --git a/Dockerfile b/Dockerfile
index eba9f485..09a26ce7 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -41,7 +41,9 @@ COPY lib ./lib
 RUN npm run deploy --prefix ./assets && \
     npm run deploy --prefix ./tracker && \
     mix phx.digest priv/static && \
-    mix download_country_database
+    mix download_country_database && \
+# https://hexdocs.pm/sentry/Sentry.Sources.html#module-source-code-storage
+    mix sentry_recompile
 
 WORKDIR /app
 COPY rel rel
diff --git a/config/runtime.exs b/config/runtime.exs
index c9bbb52d..62b92f47 100644
--- a/config/runtime.exs
+++ b/config/runtime.exs
@@ -112,7 +112,9 @@ config :sentry,
   environment_name: env,
   included_environments: ["prod", "staging"],
   release: app_version,
-  tags: %{app_version: app_version}
+  tags: %{app_version: app_version},
+  enable_source_code_context: true,
+  root_source_code_path: [File.cwd!()]
 
 config :plausible, :paddle, vendor_auth_code: paddle_auth_code
 
diff --git a/lib/plausible/application.ex b/lib/plausible/application.ex
index 6b2a6b01..423f9383 100644
--- a/lib/plausible/application.ex
+++ b/lib/plausible/application.ex
@@ -21,7 +21,7 @@ defmodule Plausible.Application do
     ]
 
     opts = [strategy: :one_for_one, name: Plausible.Supervisor]
-    {:ok, _} = Logger.add_backend(Sentry.LoggerBackend)
+    Logger.add_backend(Sentry.LoggerBackend)
     setup_cache_stats()
     Application.put_env(:plausible, :server_start, Timex.now())
     Supervisor.start_link(children, opts)
diff --git a/lib/plausible_web/endpoint.ex b/lib/plausible_web/endpoint.ex
index 8bd1555f..31a618fd 100644
--- a/lib/plausible_web/endpoint.ex
+++ b/lib/plausible_web/endpoint.ex
@@ -1,6 +1,6 @@
 defmodule PlausibleWeb.Endpoint do
-  use Phoenix.Endpoint, otp_app: :plausible
   use Sentry.PlugCapture
+  use Phoenix.Endpoint, otp_app: :plausible
 
   # Serve at "/" the static files from "priv/static" directory.
   #
diff --git a/lib/plausible_web/plugs/auth_plug.ex b/lib/plausible_web/plugs/auth_plug.ex
index f4ffda03..ee116a8f 100644
--- a/lib/plausible_web/plugs/auth_plug.ex
+++ b/lib/plausible_web/plugs/auth_plug.ex
@@ -20,7 +20,7 @@ defmodule PlausibleWeb.AuthPlug do
           )
 
         if user do
-          Sentry.Context.set_user_context(%{id: user.id, name: user.name})
+          Sentry.Context.set_user_context(%{id: user.id, name: user.name, email: user.email})
           assign(conn, :current_user, user)
         else
           conn
diff --git a/mix.exs b/mix.exs
index 905e46ce..122793bc 100644
--- a/mix.exs
+++ b/mix.exs
@@ -102,7 +102,8 @@ defmodule Plausible.MixProject do
     [
       "ecto.setup": ["ecto.create", "ecto.migrate", "run priv/repo/seeds.exs"],
       "ecto.reset": ["ecto.drop", "ecto.setup"],
-      test: ["ecto.create --quiet", "ecto.migrate", "test", "clean_clickhouse"]
+      test: ["ecto.create --quiet", "ecto.migrate", "test", "clean_clickhouse"],
+      sentry_recompile: ["compile", "deps.compile sentry --force"]
     ]
   end
 end
-- 
GitLab