Releases: BaseSecrete/rorvswild
v1.9.1
What's Changed
- Fix instrumentation when rendering an empty collection
- Hide line number from local profiler when it is not relevant (view, GC, ..)
- Fix error from local profiler when keys are not symbolized
Full Changelog: v1.9.0...v1.9.1
v1.9.0
What's Changed
-
Measure ActiveRecord async queries and displays the non blocking time
-
Measure render collection
-
Requests now report the time they have been queued by the proxy before reaching the application.
A section with the kind
queue
reports the time between the timestamp set by the HTTP proxy
when the request was received and the time the application started processing the request.This time is also included into the total runtime of the request.
New Contributors
- @AxelTheGerman made their first contribution in #34
Full Changelog: 1.8.1...v1.9.0
1.8.1
- Hide widget does not inject anything in HTML response
- Fix Set#join undefined method since it has been added from Ruby 3.0
1.8.0
-
Measure easily any Ruby method:
class Model def self.foo # ... end def bar # ... end RorVswild.measure(method(:foo)) RorVswild.measure(instance_method(:bar)) end
-
Time garbage collector
A section with the kind
gc
measures how long the GC ran during a request or a job. All GC executions are added together in a single section. For each section, the time spent in the GC is substracted.It might not be listed for all requests and jobs, since the GC is triggered when Ruby is running out of memory. You can force that in development by calling
GC.start
.From Ruby 3.1 it is enabled by default via and the agent uses
GC.total_time
. Before Ruby 3.1 the agent usesGC::Profiler.total_time
and it must be enabled withGC::Profiler.enable
. -
Store requests, jobs and errors into the local profiler
Even after restarting the server, past requests, jobs and error are still viewable from the local profiler. Upto the last 100 entries are stored per type. They are stored into JSON files located in tmp directory.
1.7.1
- Fix DelayedJob name and args for ActiveJob wrappers
- Limit server timing header to 10 entries
- Print ASCII server timing in logs
- Improve widget UI
1.7.0
-
Add Server-Timing headers
Server-Timing is a HTTP header to provide metrics about backend runtimes.
It's disabled by default, and it has to be enabled for each request.
You will probably prefer to limit to privileged users in production to prevent from exposing sensitive data.
Here is a good default setup, to enable server timing in all environments and only for admins in production:class ApplicationController < ActionController::Base before_action :expose_server_timing_headers def expose_server_timing_headers # Assuming there are current_user and admin? methods RorVsWild.send_server_timing = !Rails.env.production? || current_user.try(:admin?) end end
-
Sample requests and jobs to lower our customers' bills
These parameters should be used by large volume applications only.
When the volume is significant, sending more does not improve precision and sending less does not decrease it.
More precisely, for a large volume of requests but a low volume of jobs, it makes sens to sample requests only.# config/rorvswild.yml production: api_key: API_KEY job_sampling_rate: 0.5 # 50% of jobs are sent request_sampling_rate: 0.25 # 25% of requests are sent
1.6.5
1.6.3
- Fix not git repository stderr
- Normalize SQL queries
- Ignore errors with a rescue handler (rescue_from, retry_on and discard_on)
- Update local profiler colors
- Wait for queue to start before sending deployment information