From 922cfc454003317b119a0d7cb991b50fd0a6c1eb Mon Sep 17 00:00:00 2001 From: Seth Call Date: Mon, 4 Jan 2016 11:28:10 -0600 Subject: [PATCH] * finish out crash notification --- db/manifest | 3 +- db/up/jam_track_sessions_v2.sql | 2 ++ ruby/lib/jam_ruby/models/crash_dump.rb | 2 +- web/app/controllers/api_users_controller.rb | 31 ++++++++++++++++----- web/config/environments/development.rb | 2 +- 5 files changed, 30 insertions(+), 10 deletions(-) create mode 100644 db/up/jam_track_sessions_v2.sql diff --git a/db/manifest b/db/manifest index 8adfb91e3..b84757be9 100755 --- a/db/manifest +++ b/db/manifest @@ -317,4 +317,5 @@ purchasable_gift_cards.sql versionable_jamtracks.sql session_controller.sql jam_tracks_bpm.sql -jam_track_sessions.sql \ No newline at end of file +jam_track_sessions.sql +jam_track_sessions_v2.sql \ No newline at end of file diff --git a/db/up/jam_track_sessions_v2.sql b/db/up/jam_track_sessions_v2.sql new file mode 100644 index 000000000..cf1c6dab6 --- /dev/null +++ b/db/up/jam_track_sessions_v2.sql @@ -0,0 +1,2 @@ +ALTER TABLE jam_track_sessions ALTER COLUMN user_id DROP NOT NULL; +ALTER TABLE crash_dumps ALTER COLUMN user_id DROP NOT NULL; \ No newline at end of file diff --git a/ruby/lib/jam_ruby/models/crash_dump.rb b/ruby/lib/jam_ruby/models/crash_dump.rb index 22874a299..f71d8c21d 100644 --- a/ruby/lib/jam_ruby/models/crash_dump.rb +++ b/ruby/lib/jam_ruby/models/crash_dump.rb @@ -17,7 +17,7 @@ module JamRuby before_validation(:on => :create) do self.created_at ||= Time.now self.id = SecureRandom.uuid - self.uri = "dumps/#{created_at.strftime('%Y-%m-%d')}/#{self.id}" + self.uri = "dumps/#{created_at.strftime('%Y-%m-%d')}/#{self.id}.zip" end def user_email diff --git a/web/app/controllers/api_users_controller.rb b/web/app/controllers/api_users_controller.rb index dde826090..29f8e7d9e 100644 --- a/web/app/controllers/api_users_controller.rb +++ b/web/app/controllers/api_users_controller.rb @@ -593,10 +593,12 @@ ApiUsersController < ApiController # user_id is deduced if possible from the user's cookie. @dump = CrashDump.new + user = User.find_by_id(params[:user_id]) + @dump.client_type = params[:client_type] @dump.client_version = params[:client_version] @dump.client_id = params[:client_id] - @dump.user_id = params[:user_id] + @dump.user_id = user.id if user @dump.session_id = params[:session_id] @dump.timestamp = params[:timestamp] @dump.description = params[:description] @@ -626,12 +628,27 @@ ApiUsersController < ApiController logger.debug("crash_dump can read from url #{read_url}") - body = "Client crash for user #{current_user.email} (#{current_user.name})\n" - body << "Client type: #{@dump.client_type}" - body << "Client version: #{@dump.client_version}" - body << "Download at: #{read_url}\n" - body << "User admin url: #{current_user.admin_url}" - AdminMailer.crash_alert(subject: "Crash for #{@dump.client_type} #{current_user.email} (#{current_user.name})", body:body) + + if user + body = "Client crash for user #{user.email} (#{user.name})\n" + body << "Client type: #{@dump.client_type}\n" + body << "Client version: #{@dump.client_version}\n" + body << "Download at: #{read_url}\n" + body << "User admin url: #{user.admin_url}\n" + + subject = "Crash for #{@dump.client_type} - #{user.email} (#{user.name})" + else + body = "Client crash for unknown user\n" + body << "Client type: #{@dump.client_type}\n" + body << "Client version: #{@dump.client_version}\n" + body << "Download at: #{read_url}\n" + + subject = "Crash for #{@dump.client_type} - unknown user)" + end + + logger.debug("sending crash email with subject#{subject}") + AdminMailer.crash_alert(subject: subject, body:body).deliver + redirect_to write_url, status: 307 else # we should store it here to aid in development, but we don't have to until someone wants the feature diff --git a/web/config/environments/development.rb b/web/config/environments/development.rb index 4601ce003..6b48c1887 100644 --- a/web/config/environments/development.rb +++ b/web/config/environments/development.rb @@ -95,7 +95,7 @@ SampleApp::Application.configure do config.video_available= ENV['VIDEO_AVAILABILITY'] || "full" config.email_generic_from = 'nobody-dev@jamkazam.com' config.email_alerts_alias = ENV['ALERT_EMAIL'] || 'alerts-dev@jamkazam.com' - config.email_crashes_alias = ENV['ALERT_EMAIL'] || 'clientcrash@jamkazam.com' + config.email_crashes_alias = ENV['ALERT_EMAIL'] || 'clientcrash-dev@jamkazam.com' config.email_social_alias = ENV['ALERT_EMAIL'] || 'social-dev@jamkazam.com' config.guard_against_fraud = true config.guard_against_browser_fraud = false