0.04
No commit activity in last 3 years
No release in over 3 years
Better instrumentation/logging utility for Rails
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

~> 1.7
~> 3.1

Runtime

>= 4.0.0, ~> 4.0
 Project Readme

X Ray Machine

X-Ray

Ever wanted to log and profile your external API calls in a Rails app the same way Rails does with active record? Look no further, as the x-ray-machine is the thing that will enable you to do that!

Usage

As per usual add this to your Gemfile

gem 'x-ray-machine'

Then just call XRay.whatevers with some marker you wanna see in the logs (it can be an url or anything stringy) and then give it a block to measure.

class MyThing
  def talk_to_elastic_search
    url = figure_the_url

    XRay.elastic_search url do
      make_the_actual_request url
    end
  end

  def talk_to_twitter_api
    XRay.twitter "loading recent tweets" do
      load_some_tweets_for_fun_and_profit
    end
  end

  def craaaazy_stuff
    XRay.baaacooon "fat acids hitting the brain" do
      i_wonder_if_spacemen_eat_bacon
    end
  end
end

This will show something like this in your rails console

ElasticSearch (5.1ms)  /url?bla=bla&bla
Twitter (100.2ms) loading recent tweets
Baaacooon (10.1ms) fat acids hitting the brain

Marking Cached Results

In case you want to mark a query as cached, you can use the ray object that is passed down the block, and mark it as cached

url = "some/url.thing"

XRay.heavy_request url do |ray|
  if result = find_in_cache(url)
    ray.cached = true
  else
    result = make_the_actual_request(url)
  end
end

After that your log entry will look like so

HeavyRequest CACHE (0.1ms)  /url?bla=bla&bla

Customization & Configuration

Normally, the XRay object will use method_missing and automatically guess the name for the entry and use a random color for it, but you can customize things

XRayMachine.config do |config|
  config.elastic_search = {
    color: :yellow,         # color for the line
    title: "ES",            # title for the entries
    show_in_summary: false  # show/hide the results in the summary
  }
end

NOTE: the name you use with the config should match the one that you use on the XRay class to track your queries.

Copyright & License

All code in this repository is released under the terms of the MIT License

Copyright (C) 2014 Nikolay Nemshilov