Plot Sql Query With Rails
July 23, 2025 — Ulysse
require "bundler/inline"
gemfile do
source "https://rubygems.org"
gem "rails"
gem "sqlite3"
end
require "active_record"
ActiveRecord::Base.establish_connection(adapter: "sqlite3", database: ":memory:")
ActiveRecord::Schema.define do
create_table :posts, force: true do |t|
t.string :title
t.text :body
end
end
class Post < ActiveRecord::Base
has_many :comments
end
prefix = "posts-#{rand(0x100...0x1000).to_s(16)}"
trap(:EXIT) { system("rm -f #{prefix}.gv #{prefix}.svg") }
IO.write("#{prefix}.gv", Post.where(title: "Plot SQL query with Rails").arel.to_dot)
system("dot -T svg", in: "#{prefix}.gv", out: "#{prefix}.svg")
system("qlmanage -p #{prefix}.svg", %i[out err] => File::NULL)