Project

dbrunner

0.0
No release in over 3 years
Adds a `rails dbrunner` command that executes SQL against your database. Accepts inline SQL, .sql files, or stdin. Outputs as table, CSV, or JSON.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
 Dependencies

Runtime

 Project Readme

dbrunner

rails dbrunner — run SQL like rails runner runs Ruby.

Rails has runner, console, and dbconsole. Now it has dbrunner.

But wait, there's db:console

Yeah, and you can STDIN to it if you have your database client installed on the machine you want to run things on. You also don't get output formatting.

Install

gem "dbrunner"

Usage

# inline SQL
bin/rails dbrunner "SELECT * FROM users LIMIT 5"

# from a file
bin/rails dbrunner query.sql

# from stdin
echo "SELECT 1" | bin/rails dbrunner -

# JSON output
bin/rails dbrunner -f json "SELECT * FROM users LIMIT 5"

# CSV output
bin/rails dbrunner -f csv "SELECT * FROM users"

# specific database (multi-db)
bin/rails dbrunner --db secondary "SELECT 1"

# specific environment
bin/rails dbrunner -e production "SELECT count(*) FROM users"

Output formats

Table (default):

id | email              | created_at
---+--------------------+--------------------------
1  | alice@example.com  | 2026-01-15 08:30:00 UTC
2  | bob@example.com    | 2026-02-20 14:15:00 UTC

2 row(s)

JSON (-f json):

[
  { "id": 1, "email": "alice@example.com" },
  { "id": 2, "email": "bob@example.com" }
]

CSV (-f csv):

id,email
1,alice@example.com
2,bob@example.com

How it works

The gem registers a Rails command at rails/commands/dbrunner/dbrunner_command.rb. Rails discovers it automatically through its command lookup paths — no railtie or initializer needed. It uses ActiveRecord::Base.lease_connection to execute queries through your existing database configuration.

License

MIT