diff --git a/app/views/scores/index.html.erb b/app/views/scores/index.html.erb
index 563c9cc..8ceb420 100644
--- a/app/views/scores/index.html.erb
+++ b/app/views/scores/index.html.erb
@@ -4,8 +4,6 @@
ACTION_VIEW = <%=Live::Constants::ACTION_VIEW%>
ACTIVE_RECORD = <%=Live::Constants::ACTIVE_RECORD%>
-<%= Score.last %>
-<%= Score.last %>
<%= link_to "New score", new_score_path, class: "border rounded-lg py-3 px-5 bg-blue-600 text-white block font-medium" %>
diff --git a/lib/semantic/subscribers/active_record.rb b/lib/semantic/subscribers/active_record.rb
index 00dc35a..7717f1a 100644
--- a/lib/semantic/subscribers/active_record.rb
+++ b/lib/semantic/subscribers/active_record.rb
@@ -9,6 +9,12 @@ module Semantic
def sql(event)
name = event.payload[:name]
+ if name.nil?
+ logger.debug ' ', dimensions: Semantic::FancyDimensions.new(rails: '╔═╗', before: 1)
+ logger.debug 'could be a migration running by...', event.payload[:sql]
+ Rails.logger.info ' ', dimensions: Semantic::FancyDimensions.new(rails: '╚═╝')
+ return
+ end
return if IGNORE_PAYLOAD_NAMES.include?(name)
category, model, *remaining = name.split.reverse
@@ -23,6 +29,10 @@ module Semantic
statement_taint = TEXT_GRAY_300
name = "Cache Read #{model}"
no_stats = true
+ elsif model == ::ActiveRecord::SchemaMigration.to_s
+ category_taint = TEXT_MAGENTA
+ name = 'Migration required'
+ logger.debug ' ', dimensions: Semantic::FancyDimensions.new(rails: '╔═╗', before: 1)
else
row_count = event.payload[:row_count]
name = "Read #{row_count} #{model.pluralize(row_count)}"
@@ -62,13 +72,19 @@ module Semantic
def pretty_binded_statement(event)
statement = event.payload[:sql].dup
- bounds = event.payload[:binds].map(&:value)
+ bounds = event
+ .payload[:binds]
+ .select { |item| item.is_a?(::ActiveModel::Attribute) }
+ .map(&:value)
return statement if bounds.empty?
bounds.map { |b| boolean_or_numeric?(b) ? b.to_s : "'#{b}'" }
.each_with_index { |sb, index| statement.gsub!("$#{index + 1}", sb) }
statement.gsub!(/ LIMIT 1$/, '') # LIMIT 1 is useless!
statement
+ rescue StandardError => e
+ logger.debug event.payload[:binds]
+ logger.error 'an error occured during pretty binded statement', e
end
def boolean_or_numeric?(value) = value.is_a?(Numeric) || value.is_a?(TrueClass) || value.is_a?(FalseClass)