Integrate Metabase in Ruby on Rails

Today, I am proposing a very simple tutorial. I needed to integrate a Metabase dashboard in one of my applications and I realized there is no article which explains how to do that. So, ta-da!

Requirements

To follow this tutorial, you will need

  • a Metabase dashboard (read this article from my fellow Laurent Dogin to have yours set up in a few minutes)
  • a Ruby on Rails application (read this article by me if you need to set up one)

Enabling integration in Metabase

From your Metabase, click on the top right gear icon, then Admin. On the left menu select Embedding in other Applications. Toggle the button to have it saying Enabled. You will now get an Embedding API key. Save it for later.

Enable integrations on Metabase

Leave Metabase admin and select the dashboard you want to integrate. Click the sharing and embedding icon on the top right of your dashboard. Now select Embed this dashboard in an Application. Finally, click on the Publish button.

Integrate Metabase in Rails

In your Gemfile, add gem 'jwt' then run $ bundle install. If your application is deployed on Clever Cloud go to your application's console and under your application's menu go to the environment variables menu. If you deploy locally, use the gem figaro and edit your application.yml. Anyway you must add two environment variables

METABASE_SITE_URL: <your metabase url>
METABASE_SECRET_KEY: <the API key from metabase admin>

In the controller action where you want to integrate your metabase dashboard, add the following lines:

payload = {
          :resource => {:dashboard => <your dashboard number>},
          :params => { },
          :exp => Time.now.to_i + (60 * 10) # 10 minute expiration
    }
token = JWT.encode(payload, ENV["METABASE_SECRET_KEY"])
@iframe_url = ENV["METABASE_SITE_URL"] + "/embed/dashboard/" + token + "#bordered=true&titled=true"

Now in your view, add

<iframe
    src="<%= @iframe_url %>"
    frameborder="0"
    width="800"
    height="600"
    allowtransparency
></iframe>

You are all set. Just restart your application so the new environment variables are taken in consideration. Voilà, your application now has an integrated Metabase dashboard.

Blog

À lire également

How We Deployed a Vinext Application in Minutes on Clever Cloud with AI

Cloudflare has just announced Vinext, a drop-in replacement for Next.js built on Vite. The project is vibecoded, experimental, but the promise is compelling: builds up to 4x faster, bundles 57% lighter, and 94% coverage of the Next.js API. We wanted to see how easy it would be to deploy it on Clever Cloud.
Engineering

New IAM feature: what our Managed Keycloak offers today

Since its launch, Keycloak as a Service has evolved significantly to meet the concrete needs of businesses and the requirements of operating IAM at scale.
Engineering

Clever Cloud to be heard by the National Assembly’s Law Committee in the context of the bill on securing Digital Public Procurement

Nantes, 16 February 2026 – Clever Cloud is honoured to be heard on 20 February 2026 before the Law Committee of the French National Assembly as part of the examination of Bill No. 2258 on securing digital public procurement, adopted by the Senate.
Company Press