Ruby frameworks - End of Life
Important
The Ruby Agent is not currently being sold to new customers. Please contact our Sales team if you have any questions about our offerings and support for the Ruby language.
Application frameworks are software libraries that provide a fundamental structure to support the development of applications for a specific environment.
Follow these guidelines based on your framework:
Configure with Rails
If you are using Rails, the Ruby agent functions as a Railtie so no additional configuration is required.
Configure with Sinatra
If you are using the Sinatra framework, you must configure your application to use the Ruby agent. A simple application configured to work with the Ruby agent looks like the following example:
require 'sinatra' require 'contrast-agent' class App < Sinatra::Base use Contrast::Agent::Middleware, true end
Configure Sinatra with config.ru
If there is no class extending, Sinatra::Base or config.ru is the default way of racking up your application with the following configuration:
config.ru
# frozen_string_literal: true # Require Sinatra early for Framework support to detect it. require 'sinatra' # example app.rb, could be any file implementing Sinatra # endpoints and logic. # # For instance: # # # frozen_string_literal: true # # require 'sinatra' # # get '/frank-says' do # 'Put this in your pipe & smoke it!' # end # require './app.rb' # Contrast Agent needs to be required after sinatra. require 'contrast-agent' # Example for requiring gems: require 'bundler/setup' Bundler.require(:default) # Add Contrast Agent middleware to the rack stack: use Contrast::Agent::Middleware, true # Run Sinatra application: run Sinatra::Application
Start the application with:
bundle exec rackup
OR
bundle exec rackup config.ru
Configure with Grape
If you are using the Grape framework, you must configure your application to use the Ruby agent. A simple application configured to work with the Ruby agent looks like the following example:
require 'grape' require 'contrast-agent' class App < Grape::API use Contrast::Agent::Middleware, true end
Configure Grape with config.ru
If there is no class extending, Grape::API or config.ru is the default way of racking up your application with the following configuration:
config.ru
# frozen_string_literal: true
require 'rack'
# Require Grape early for Framework support to detect it.
require 'Grape'
# example app.rb, could be any file implementing Grape
# endpoints and logic.
#
# For instance:
#
# # frozen_string_literal: true
#
# require 'Grape'
#
# class App
# def initialize
# @filenames = ['', '.html', 'index.html', '/index.html']
# @rack_static = ::Rack::Static.new(
# lambda { [404, {}, []] },
# root: File.expand_path('../public', __dir__),
# urls: ['/']
# )
# end
#
# def self.instance
# @instance ||= Rack::Builder.new do
# use Rack::Cors do
# allow do
# origins '*'
# resource '*', headers: :any, methods: :get
# end
# end
#
# run App.new
# end.to_app
# end
# def call(env)
# # Grape::API impleted in API module:
# API.call(env)
# # handle response
# ......
# end
# end
#
require './app.rb'
# Contrast Agent needs to be required after Grape.
require 'contrast-agent'
# Example for requiring gems:
require 'bundler/setup'
Bundler.require(:default)
# Add Contrast Agent middleware to the rack stack:
use Contrast::Agent::Middleware, true
# Run Grape application:
run App.instanceStart the application with:
bundle exec rackup
OR
bundle exec rackup config.ru