New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

remnant

Package Overview
Dependencies
Maintainers
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

remnant

  • 1.0.0
  • Rubygems
  • Socket score

Version published
Maintainers
1
Created
Source

Remnant hooks into your Rails and discovers your hidden statistics.

Supports
  • Rails 2.3.x with REE for GC (v0.4.3)
  • Rails 3.2.x with 1.9.3 and 2.0.0 for GC (v0.9.x)
What Remnant Captures
  • request - time it takes for a request to be served
  • action - time it takes for the controller action to finish
  • view - total time for the totality of render to complete
  • templates - time it takes for each template/partial to render
  • filters - time it takes for each filter to run
  • db - total time it takes for all queries to execute
  • queries - time it takes for each sql query to execute
  • gc - time spent inside the GC (if avaialble ree, 1.9.3, etc)

These stats are sent to statsd: request, action, view, gc, db, filters

Install

Using bundler:

gem 'remnant'
Usage

Add an initializer to configure (or call configure during application startup):

Remnant.configure do
  # hostname of statsd server
  host "https://remnant.statsd"

  # port of statsd server
  port 8125

  # app name or other unique key for multiple app usage
  tagged "custom"

  # environment of application, defaults to Rails.env
  # included in payload
  environment "production"

  hook do |results|
    # custom hook to run after each remnant capture with results
    # results = {key => ms, key2 => ms2}
  end
end

Remnant::Rails.setup! # needed if on Rails 2.3.x

If you want to capture the times it takes to render templates/partials you should enable Template capturing in a before filter (or before rendering takes place)

before_filter {|c| Remnant::Template.enable! }

If you want to capture the sql query times you should enable Database capturing in a before filter (or before any database calls take place)

before_filter {|c| Remnant::Database.enable! }
Example of using hook

Below is a way to use all captured information remnant offers

hook do |results|
  results.map do |key, ms|
    # loop through specially captures results
    # [request, action, view]
  end

  # total time for db
  Remnant::Database.total_time.to_i

  # total time for all filters
  Remnant::Filters.total_time.to_i

  # time for individual filters
  # [{:type => 'before|after|round',
  #   :name => filter_name,
  #   :time => microseconds,
  #   :ms => ms
  # }]
  Remnant::Filters.filters.to_json

  # time for individual templates/partials
  # [view => {'time' => ms,
  #           'exclusive' => ms,
  #           'depth' => depth,
  #           'children' => []
  # }]
  if Remnant::Template.enabled?
    Remnant::Template.trace.root.children.map(&:results).to_json
  end

  # time for sql queries
  if Remnant::Database.enabled?
    queries = Remnant::Database.queries.map {|q| {:sql => q.sql, :ms => q.time * 1000}}
  end

  # time spent in GC and number of collection attempts
  Remnant::GC.time.to_i
  Remnant::GC.collections.to_i
end
Note

Remnant logs to statsd only if your environment is production, demo or staging. For all other environments it logs via Rails.logger.info

Author

Original author: John "asceth" Long

FAQs

Package last updated on 18 Aug 2016

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc