Installation
ReactorSDK is intentionally lightweight to install, but production-quality setup still deserves care. This page covers runtime requirements, how to add the gem to an application, how to provide credentials safely, and how to verify the setup before you build deeper Launch workflows.
Requirements
The SDK requires Ruby 3.2.0 or newer and an Adobe Developer Console project configured for Launch API access.
| Attribute | Data type | Description |
|---|---|---|
| Ruby runtime | RequirementRequired | ReactorSDK requires Ruby |
| Adobe Developer Console project | RequirementRequired | You need a project with the Adobe Launch service added. |
| OAuth server-to-server credentials | RequirementRequired | You need a client ID, client secret, and IMS organization ID. |
| Network access | RequirementRequired | Your runtime must be able to reach Adobe IMS and |
ReactorSDK does not target Adobe's legacy JWT service account flow. The supported authentication path in the implementation is OAuth server-to-server.
Install ReactorSDK
Bundler is the normal installation path for Rails apps, service objects, background jobs, and internal tooling.
# Add ReactorSDK to the Bundler dependency list for your app.
gem "reactor_sdk"
If you want a tighter dependency pin, use the current patch line or an exact version:
Version pinning
# Follow the 0.1 patch line while allowing non-breaking patch upgrades.
gem "reactor_sdk", "~> 0.1.0"
# or
# Pin to one exact version when you need fully deterministic installs.
gem "reactor_sdk", "0.1.0"
Provide credentials safely
Environment variables are the safest and most portable default. They keep secrets out of source control and play well with containers, CI, staging, and background jobs.
Shell environment
# Adobe Developer Console client ID.
export ADOBE_CLIENT_ID="your-client-id"
# Adobe Developer Console client secret.
export ADOBE_CLIENT_SECRET="your-client-secret"
# IMS organization ID for the target Adobe organization.
export ADOBE_IMS_ORG_ID="your-org-id@AdobeOrg"
Client constructor
# Instantiate one SDK client using credentials from environment variables.
client = ReactorSDK::Client.new(
# Client ID from Adobe Developer Console.
client_id: ENV.fetch("ADOBE_CLIENT_ID"),
# Client secret from Adobe Developer Console.
client_secret: ENV.fetch("ADOBE_CLIENT_SECRET"),
# IMS organization ID ending in @AdobeOrg.
org_id: ENV.fetch("ADOBE_IMS_ORG_ID")
)
You can also load credentials from Rails encrypted credentials or a database-backed credential record when your application needs to talk to multiple Adobe organizations.
Verify the installation
The cleanest verification path is to build a client and call companies.list. It is small, fast, and proves that token exchange and authenticated Reactor requests both work.
Smoke test
# Load the gem so ReactorSDK::Client is available.
require "reactor_sdk"
# Build the authenticated client.
client = ReactorSDK::Client.new(
# Client ID from Adobe Developer Console.
client_id: ENV.fetch("ADOBE_CLIENT_ID"),
# Client secret from Adobe Developer Console.
client_secret: ENV.fetch("ADOBE_CLIENT_SECRET"),
# IMS organization ID for the Adobe org you are targeting.
org_id: ENV.fetch("ADOBE_IMS_ORG_ID")
)
# Issue a lightweight authenticated request against Reactor.
companies = client.companies.list
# Print the first company name if at least one company is visible.
puts companies.first&.name
If this fails:
- A blank required field raises
ReactorSDK::ConfigurationErrorat client creation time. - A bad Adobe credential set raises
ReactorSDK::AuthenticationErrorwhen the token is fetched. - A valid token with insufficient Launch access raises
ReactorSDK::AuthorizationErroron the Reactor API request.