Ruby Integration

Installation

Add the RocketGraph SDK to your Gemfile:

gem 'rocketgraph-ruby'

Then run:

bundle install

Quick Start

Add the following code to your Ruby application:



# Rocketgraph
require 'rocketgraph'
use Rocketgraph::ErrorReportingMiddleware, 'https://rocketgraph.io/monitoring', 'sk_your_secret_key_here'


Features

  • Exception tracking
  • Performance monitoring
  • Custom event tracking
  • Request/Response monitoring
  • Database query tracking
  • Background job monitoring

Cookbooks

app.rb



require 'sinatra'
require 'logger'
require 'json'
# Rocketgraph
require 'rocketgraph'
use Rocketgraph::ErrorReportingMiddleware, 'https://rocketgraph.io/monitoring', 'sk_your_secret_key_here'

# Configure Logger
logger = Logger.new(STDOUT)
logger.level = Logger::INFO

# Simulate background task to generate logs (e.g., system checks, metrics)
Thread.new do
  loop do
    # Generate ~0.5 logs/second (43,200 logs/day)
    sleep 2
    case rand(1..10)
    when 1..8
      logger.info("Background task: System health check OK")
    when 9
      logger.warn("Background task: High memory usage detected")
    when 10
      logger.error("Background task: Failed to connect to database")
    end
  rescue StandardError => e
    logger.error("Background task error: #{e.message}")
  end
end

# HTTP Endpoints
before do
  # Log every incoming request
  logger.info("Received #{request.request_method} request to #{request.path_info}")
end

get '/' do
  logger.info("Homepage accessed")
  'Welcome to the Log Generator App!'
end

get '/api/users' do
  # Simulate fetching users
  users = (1..10).map { |i| { id: i, name: "User#{i}" } }
  logger.info("Fetched user list")
  
  # Simulate occasional errors (~10% of requests)
  if rand < 0.1
    logger.error("Failed to fetch users: Database timeout")
    status 500
    return { error: 'Internal Server Error' }.to_json
  end

  content_type :json
  users.to_json
end

post '/api/users' do
  begin
    payload = JSON.parse(request.body.read)
    logger.info("Created user: #{payload['name']}")
    status 201
    { message: "User #{payload['name']} created" }.to_json
  rescue JSON::ParserError
    logger.error("Invalid JSON payload")
    status 400
    { error: 'Invalid JSON' }.to_json
  end
end

# Simulate a heavy endpoint that logs multiple times
get '/api/report' do
  10.times do |i|
    logger.info("Generating report section #{i + 1}")
    sleep 0.1 # Simulate work
  end
  logger.info("Report generation completed")
  content_type :json
  { report: 'Generated successfully' }.to_json
end

# Error handling
error do
  logger.error("Unhandled error: #{env['sinatra.error'].message}")
  status 500
  { error: 'Something went wrong' }.to_json
end



      

Examples

Custom Event Tracking

RocketGraph.track('user_action', {
  action: 'login',
  user_id: '123',
  timestamp: Time.now
})

Error Tracking

begin
  # Your code here
rescue => e
  RocketGraph.capture_exception(e)
  raise
end

Background Job Monitoring

class MyJob
  include RocketGraph::Job

  def perform
    # Your job code here
  end
end