diff --git a/lib/rack/tracker/google_global/google_global.rb b/lib/rack/tracker/google_global/google_global.rb
index 0631794..5ccb817 100644
--- a/lib/rack/tracker/google_global/google_global.rb
+++ b/lib/rack/tracker/google_global/google_global.rb
@@ -35,9 +35,7 @@ def events
end
def trackers
- options[:trackers].map { |tracker|
- tracker[:id].respond_to?(:call) ? tracker.merge(id: tracker[:id].call(env)) : tracker
- }.reject { |tracker| tracker[:id].nil? }
+ @_trackers ||= build_trackers
end
def set_options
@@ -46,6 +44,31 @@ def set_options
private
+ def build_trackers
+ options[:trackers].map(&method(:call_tracker)).reject(&method(:invalid_tracker?))
+ end
+
+ def call_tracker(tracker)
+ if tracker[:id].respond_to?(:call)
+ tracker.merge(id: tracker[:id].call(env))
+ else
+ tracker
+ end
+ end
+
+ def invalid_tracker?(tracker)
+ if tracker[:id].to_s.strip == ''
+ $stdout.puts <<~WARN
+ WARNING: One of the trackers specified for Rack::Tracker handler 'google_global' is empty.
+ Trackers: #{options[:trackers]}
+ WARN
+
+ true
+ else
+ false
+ end
+ end
+
def build_set_options
value = options[:set]
value.respond_to?(:call) ? value.call(env) : value
diff --git a/lib/rack/tracker/google_global/template/google_global.erb b/lib/rack/tracker/google_global/template/google_global.erb
index b6141a8..9103419 100644
--- a/lib/rack/tracker/google_global/template/google_global.erb
+++ b/lib/rack/tracker/google_global/template/google_global.erb
@@ -1,4 +1,4 @@
-<% if trackers %>
+<% if trackers.any? %>