lib/yarder/action_controller/log_subscriber.rb in yarder-0.0.2 vs lib/yarder/action_controller/log_subscriber.rb in yarder-0.1.0
- old
+ new
@@ -6,69 +6,69 @@
INTERNAL_PARAMS = %w(controller action format _method only_path)
def start_processing(event)
payload = event.payload
- entry.fields['controller'] = payload[:controller]
- entry.fields['action'] = payload[:action]
-
- format = payload[:format]
- entry.fields['format'] = format.to_s.downcase if format.is_a?(Symbol)
-
+ entry['name'] = payload[:controller]
+ entry['action'] = payload[:action]
+ entry['path'] = payload[:path]
+ entry['format'] = payload[:format].to_s.downcase
end
def process_action(event)
-
payload = event.payload
- #TODO Think about additions. Comment out for the moment to shut up warnings
- #additions = ::ActionController::Base.log_process_action(payload)
params = payload[:params].except(*INTERNAL_PARAMS)
- entry.fields['parameters'] = params unless params.empty?
+ entry['parameters'] = params unless params.empty?
- entry.fields['controller_duration'] = event.duration
-
- #TODO What on earth are additions and how should we handle them?
- # message << " (#{additions.join(" | ")})" unless additions.blank?
-
+ root['duration']['controller'] = event.duration
end
def halted_callback(event)
- entry.fields['halted_callback'] = event.payload[:filter]
+ entry['halted_callback'] = event.payload[:filter]
end
def send_file(event)
- entry.fields['send_file'] = event.payload[:path]
- entry.fields['send_file_duration'] = event.duration
+ entry['send_file'] = event.payload[:path]
+ root['duration']['send_file'] = event.duration
end
def redirect_to(event)
- entry.fields['redirect_to'] = event.payload[:location]
+ entry['redirect_to'] = event.payload[:location]
end
def send_data(event)
- entry.fields['send_data'] = event.payload[:filename]
- entry.fields['send_data_duration'] = event.duration
+ entry['send_data'] = event.payload[:filename]
+ root['duration']['send_data'] = event.duration
end
%w(write_fragment read_fragment exist_fragment?
expire_fragment expire_page write_page).each do |method|
class_eval <<-METHOD, __FILE__, __LINE__ + 1
def #{method}(event)
- entry.fields['cache'] ||= []
cache_event = {}
cache_event['key_or_path'] = event.payload[:key] || event.payload[:path]
cache_event['type'] = #{method.to_s.humanize.inspect}
cache_event['duration'] = event.duration
- entry.fields['cache'] << cache_event
+ cache << cache_event
+ root['duration']['cache'] ||= 0
+ root['duration']['cache'] += event.duration.to_f
end
METHOD
end
private
def entry
- Yarder.log_entries[Thread.current]
+ @entry ||= (root['controller'] ||= {})
+ end
+
+ def cache
+ @cache ||= (root['cache'] ||= [])
+ end
+
+ def root
+ @root ||= Yarder.log_entries[Thread.current].fields.tap { |o| o['duration'] ||= {} }
end
end
end
end