module NRBundlerPatch
This file is designed to bootstrap a ‘Bundler.require`-based Ruby app (such as a Ruby on Rails app) so the app can be instrumented and observed by the New Relic Ruby agent without the agent being added to the app as a dependency. NOTE: introducing the agent into your application via bootstrap is in beta. Use at your own risk.
Given a production-ready Ruby app that optionally has a pre-packaged “frozen” or “deployment”–gem bundle, the New Relic Ruby agent can be introduced to the app without modifying the app and keeping all of the app’s content read-only.
Prerequisites:
- Ruby (tested v2.4+) - Bundler (included with Ruby, tested v1.17+)
Instructions:
- First, make sure the New Relic Ruby agent exists on disk. For these instructions, we'll assume the agent exists at `/newrelic`. - The agent can be downloaded as the "newrelic_rpm" gem from RubyGems.org and unpacked with "gem unpack" - The agent can be cloned from the New Relic public GitHub repo: https://github.com/newrelic/newrelic-ruby-agent - Next, use the "RUBYOPT" environment variable to require ("-r") this file (note that the ".rb" extension is dropped): ``` export RUBYOPT="-r /newrelic/lib/boot/strap" ``` - Add your New Relic license key as an environment variable. ``` export NEW_RELIC_LICENSE_KEY=1a2b3c4d5e67f8g9h0i ``` - Launch an existing Ruby app as usual. For a Ruby on Rails app, this might involve running `bin/rails server`. - In the Ruby app's directory, look for and inspect `log/newrelic_agent.log`. If this file exists and there are no "WARN" or "ERROR" entries within it, then the agent was successfully introduced to the Ruby application.
Constants
- NR_AGENT_GEM
Public Instance Methods
require(*_groups)
click to toggle source
Calls superclass method
# File lib/boot/strap.rb, line 46 def require(*_groups) super require_newrelic end
require_newrelic()
click to toggle source
# File lib/boot/strap.rb, line 52 def require_newrelic lib = File.expand_path('../..', __FILE__) $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib) Kernel.require NR_AGENT_GEM end