No Description

Andrew Kane f44dfdfcbb Replaced remove method for older versions of Rails 10 years ago
app f44dfdfcbb Replaced remove method for older versions of Rails 10 years ago
config febad48ae1 First commit 10 years ago
lib febad48ae1 First commit 10 years ago
.gitignore febad48ae1 First commit 10 years ago
Gemfile febad48ae1 First commit 10 years ago
LICENSE.txt febad48ae1 First commit 10 years ago
README.md 397411916c Do not require environment variable in development 10 years ago
Rakefile febad48ae1 First commit 10 years ago
blazer.gemspec febad48ae1 First commit 10 years ago

README.md

Blazer

Create and share SQL queries instantly

View the demo

Works with PostgreSQL and MySQL

:tangerine: Battle-tested at Instacart

Features

  • Secure - works with your authentication system
  • Variables - get the same insights for multiple values
  • Linked Columns - link to other pages in your apps or around the web
  • Smart Columns - get the data your want without all the joins
  • Smart Variables - no need to remember IDs
  • Charts & Maps - a picture is worth a thousand words

Installation

Add this line to your application’s Gemfile:

gem 'blazer'

Run:

rails g blazer:install
rake db:migrate

And mount the dashboard in your config/routes.rb:

mount Blazer::Engine, at: "blazer"

For production, specify your database:

ENV["BLAZER_DATABASE_URL"]

It is highly, highly recommended to use a read only user. Keep reading to see how to create one.

Permissions

PostgreSQL

Create a user with read only permissions:

BEGIN;
CREATE ROLE blazer LOGIN PASSWORD 'secret123';
GRANT CONNECT ON DATABASE database_name TO blazer;
GRANT USAGE ON SCHEMA public TO blazer;
COMMIT;

It is highly, highly recommended to protect sensitive information with views. Documentation coming soon.

MySQL

Create a user with read only permissions:

GRANT SELECT, SHOW VIEW ON database_name.* TO blazer@’127.0.0.1′ IDENTIFIED BY ‘secret123‘;
FLUSH PRIVILEGES;

It is highly, highly recommended to protect sensitive information with views. Documentation coming soon.

Authentication

Don’t forget to protect the dashboard in production.

Basic Authentication

Set the following variables in your environment or an initializer.

ENV["BLAZER_USERNAME"] = "andrew"
ENV["BLAZER_PASSWORD"] = "secret"

Devise

authenticate :user, lambda{|user| user.admin? } do
  mount Blazer::Engine, at: "blazer"
end

Customization

Change time zone

Blazer.time_zone = "Pacific Time (US & Canada)"

Turn off audits

Blazer.audit = false

TODO

  • better readme
  • better navigation
  • standalone version
  • update lock
  • warn when database user has write permissions
  • advanced permissions
  • favorites
  • support for multiple data sources

Thanks

Blazer uses a number of awesome, open source projects.

Contributing

Everyone is encouraged to help improve this project. Here are a few ways you can help: