diff --git a/app/jobs/load_user_activities_job.rb b/app/jobs/load_user_activities_job.rb index dded685..7e09812 100644 --- a/app/jobs/load_user_activities_job.rb +++ b/app/jobs/load_user_activities_job.rb @@ -13,6 +13,8 @@ class LoadUserActivitiesJob < ApplicationJob client = SpotifyClient.new(login) last_spotify_activity_at = latest_activity_iso(login.platform) new_activities = client.load_since(last_spotify_activity_at) + # log some info about the response with status and parts of the body + Rails.logger.info("Response: #{new_activities}") create_action = CreateSpotifyActivity.new(user, new_activities) create_action.perform logger.info("Loading for #{user.id} finished with #{new_activities.size} new activities") diff --git a/app/services/create_spotify_activity.rb b/app/services/create_spotify_activity.rb index c30808b..830d487 100644 --- a/app/services/create_spotify_activity.rb +++ b/app/services/create_spotify_activity.rb @@ -8,21 +8,27 @@ class CreateSpotifyActivity # rubocop:disable Metrics/AbcSize def perform - # log some info about the response with status and parts of the body - Rails.logger.info("Response status: #{response["status"]}") - Rails.logger.info("Response body: #{response["body"]}") - counts = response["items"].size - Rails.logger.info("Saving #{counts} activities") - response["items"].reverse.each do |play| - activity = new_activity - activity.item_ref = play["track"]["id"] - artist_names = play["track"]["artists"].map { |a| a["name"] } - artists = artist_names.join(", ") - title = "#{artists} - #{play['track']['name']}" - activity.item_title = title - activity.item_length = play["track"]["duration"].to_s - activity.started_at = DateTime.parse(play["played_at"]) - activity.save! + begin + # log some info about the response with status and parts of the body + Rails.logger.info("Response status: #{response["status"]}") + Rails.logger.info("Response body: #{response["body"]}") + counts = response["items"].size + Rails.logger.info("Saving #{counts} activities") + response["items"].reverse.each do |play| + activity = new_activity + activity.item_ref = play["track"]["id"] + artist_names = play["track"]["artists"].map { |a| a["name"] } + artists = artist_names.join(", ") + title = "#{artists} - #{play['track']['name']}" + activity.item_title = title + activity.item_length = play["track"]["duration"].to_s + activity.started_at = DateTime.parse(play["played_at"]) + activity.save! + end + rescue => e + Rails.logger.error("[CreateSpotifyActivity] Error: #{e.message}\n#{e.backtrace.join("\n")}") + Rails.logger.error("[CreateSpotifyActivity] Response object: #{response.inspect}") + raise e end end # rubocop:enable Metrics/AbcSize