ankane/blazer
46.9
Weak · 26 September 2026
3.8k
lines of production code
Ruby
primary language
4
measurements over time
What this system is
Blazer is a Rails engine that enables users to execute SQL queries against a wide variety of data sources, including relational databases, data warehouses, and NoSQL systems. It provides a web interface for building, visualizing, and sharing query results through interactive dashboards and charts. The system also supports scheduled data checks to monitor for anomalies or missing data, with configurable email and Slack notifications for failures. Additionally, it allows users to upload CSV files to create temporary tables for ad-hoc analysis.
How it got here
2014 — Version 3.5.2 release and modernization
13 changes.
This period focused on the major version 3.5.2 release, introducing extensive new capabilities such as scheduled data checks, dashboard grouping, and file upload support. The project underwent significant architectural refactoring to support a wide array of data sources, modernize the UI with Chart.js and Bootstrap, and upgrade dependencies to Rails 7.2 and Ruby 3.3.
2015–2016 — multi-source adapter expansion and UI overhaul
7 changes.
This period focused on significantly expanding Blazer's connectivity by adding adapters for numerous modern data sources like BigQuery, Snowflake, and ClickHouse. Concurrently, the project overhauled the user interface with modern components and introduced a comprehensive Checks feature for monitoring query results and managing data integrity alerts.
2020–2024 — adapter testing and CSV uploads
6 changes.
This period focused on expanding test coverage for a wide range of database adapters and introducing an experimental feature for uploading CSV files to create database tables. The work included establishing robust integration testing infrastructure and adding continuous integration support for newer Rails versions.
Features
Added Rake tasks for Blazer query archiving and check management
A new Rake task file for Blazer has been introduced, providing command-line interfaces for database monitoring and maintenance. Users can now run scheduled or manual data integrity checks via \blazer:run\_checks\, send notifications for any failing checks via \blazer:send\_failing\_checks\, and archive old queries using the new \blazer:archive\_queries\ task, which includes error handling to abort on failure.
lib/tasks · high confidence
Added asset pipeline stylesheets for Bootstrap, daterangepicker, and Tom Select
The application now includes dedicated stylesheet files for its core UI components, supporting both Sprockets and the experimental Propshaft asset pipeline. This adds Bootstrap v3.4.1 (with Glyphicons), the daterangepicker, and Tom Select v2.6.1, while removing the previous Bootstrap source map to reduce asset size.
app/assets/stylesheets · high confidence
Added experimental CSV upload feature
Users can now create database tables from CSV files via a new experimental upload feature. This adds a dedicated section for managing uploads, including a list view to see existing uploads, a form to specify the table name and description while uploading a CSV file, and the ability to edit or delete uploads. The uploaded data is stored in a configurable schema.
app/views/blazer/uploads · high confidence
Added upload support and modernized generator implementation
Blazer now includes a new \UploadsGenerator\ that creates a migration for storing query uploads, enabling users to save and manage file attachments within the application. The existing \InstallGenerator\ has been refactored to use the modern \ActiveRecord::Generators::Migration\ module and includes a \migration\_version\ helper, ensuring better compatibility with current Rails versions and cleaner migration file naming.
lib/generators/blazer · high confidence
Enhanced email notifications for check monitoring
Users now receive more detailed email notifications when data checks fail or change state. The new 'failing\_checks' view lists all currently failing checks with links to their queries, while the 'state\_change' view provides a formatted table of up to 10 sample rows from the query results when bad data is detected, including proper time zone handling for timestamp columns. This allows users to quickly assess the impact of check failures without immediately navigating to the dashboard.
_app/views/blazer/check\mailer · high confidence
Introduce Checks feature for monitoring query results
Users can now create and manage 'Checks' to monitor queries for bad or missing data. The new Checks interface includes an index page listing all checks with their current state, schedule, and notification settings, as well as new and edit forms. The form allows users to select a query, configure alert conditions (such as 'Alert if' specific check types or 'Fails if' results are present/absent), set a run schedule, and define notification recipients. The index page also supports filtering checks by name or state via a search bar.
app/views/blazer/checks · high confidence
Introduction of scheduled data checks and dashboard grouping
Blazer now supports scheduled data checks that monitor queries for errors, timeouts, or missing data, automatically disabling checks after consecutive failures and notifying users via configurable notifiers. Additionally, users can group queries into dashboards for organized viewing, with dashboards inheriting variables from their constituent queries.
blazer · high confidence
Major version 3.5.2 release with extensive new capabilities
Blazer has been updated to version 3.5.2, introducing a comprehensive set of new features and architectural improvements. The library now supports a wide array of data sources via a new adapter registration system, including Athena, BigQuery, Cassandra, ClickHouse, Druid, Elasticsearch, Hive, InfluxDB, Neo4j, Opensearch, Presto, Salesforce, Snowflake, and Trino. Users can now leverage built-in anomaly detection (using AnomalyDetection.rb, Prophet, or Trend) and forecasting capabilities (Prophet and Trend) for time-series data. Notification channels have been expanded with dedicated support for Slack (via webhooks and OAuth) and email, allowing checks to alert users on state changes or failures. The engine now supports asynchronous query execution via ActiveJob, configurable asset precompilation for Sprockets 4, and flexible variable handling with hash-based smart columns. Additionally, the release includes security hardening against XSS vulnerabilities in Chartkick, fixes for binary data handling, and improved compatibility with Rails 7.1.
lib/blazer · high confidence
New database adapters for Athena, BigQuery, ClickHouse, Druid, Elasticsearch, InfluxDB, Neo4j, OpenSearch, Presto, Salesforce, Snowflake, and more
This release adds a comprehensive suite of new database adapters to Blazer, enabling users to connect to a wide variety of data sources. The diff introduces dedicated adapter classes for Amazon Athena (including workgroup and catalog support), Google BigQuery, Apache Cassandra, ClickHouse (with query cancellation and 64-bit integer handling), Apache Drill, Apache Druid (with timestamp parsing), Elasticsearch (supporting both SQL and X-Pack endpoints), Apache Hive, Apache Ignite, InfluxDB, Neo4j (supporting both Bolt and HTTP protocols), OpenSearch, Presto/Trino, Salesforce (via SOQL), Socrata Open Data API (SODA), and Apache Spark. It also includes a new native Snowflake adapter (Snowflake2) using the Snowflake SQL API alongside the existing ODBC-based adapter, ensuring backward compatibility. These adapters provide specific features like parameter binding, schema introspection, table listing, and type casting tailored to each database's capabilities.
lib/blazer/adapters · high confidence
Behavioural changes
Expanded routing for queries, checks, dashboards, and uploads
The application now exposes new endpoints to support query cancellation and refreshing, dashboard refreshing, and the execution of checks. Additionally, routes for viewing tables, schema, and documentation have been added to the queries resource, and conditional support for file uploads is enabled when the uploads feature is active. The default home page route has also been updated to point to the queries home view.
config · high confidence
Major refactoring of core library with expanded data source and configuration support
The Blazer library has been significantly restructured to support a wider variety of data sources and more granular configuration. The main entry point now explicitly loads adapters for diverse systems including Athena, BigQuery, Cassandra, ClickHouse, Druid, Elasticsearch, Hive, Ignite, InfluxDB, Neo4j, OpenSearch, Presto, Salesforce, SODA, Spark, SQL, Snowflake, and Snowflake2. New configuration options have been added to the main module, allowing users to customize user identification (user\_name, user\_class, user\_method), set up before\_action filters, configure email and Slack notification details (including OAuth tokens and webhooks), enable features like async execution, image rendering, and CSP overrides, and define custom check schedules, anomaly detection, and forecasting behaviors. The library also introduces a robust check-running mechanism with retry logic for timeout and connection errors, and loads optional components like CheckMailer and RunStatementJob via autoload.
lib · high confidence
New navigation and variable input components for Blazer
The Blazer interface now includes a dedicated navigation bar (\_nav.html.erb) providing links to Home, Checks, Uploads, New Query, and New Dashboard, improving discoverability of key actions. Additionally, a new variables partial (\_variables.html.erb) replaces the previous inline implementation, introducing Tom Select for dropdown variables and a modernized DateRangePicker for date/time inputs, which enhances the user experience when filtering queries with dynamic parameters.
app/views/blazer · high confidence
Redesigned dashboard creation and viewing with modern UI components
The dashboard interface has been rebuilt to improve usability and maintainability. The dashboard creation and editing forms now use a shared partial with native JavaScript and Tom Select for query selection, replacing previous jQuery/Vue implementations for a cleaner, more responsive experience. The dashboard view page now features a dedicated top navigation bar, displays friendly query names, and includes a 'Refresh' action for cached queries. Additionally, the view properly handles variable parameters and provides better error feedback for individual charts.
app/views/blazer/dashboards · high confidence
Redesigned query editor and home page with modern UI and new visualization features
The query interface has been significantly modernized: the home page now features a client-side search with fuzzy matching and filters for 'Mine' and 'Viewed' queries, while the query editor form has been restructured to include a data source selector, table preview dropdown, and dedicated Run/Cancel buttons. The results view now supports advanced visualizations including line, column, bar, pie, scatter, and map charts, as well as cohort analysis tables and single-value displays. Additionally, a new Schema page allows users to browse and search table/column definitions, and a Docs page explains smart variables, linked columns, and chart requirements.
app/views/blazer/queries · high confidence
Refactor controllers to inherit from a shared base and introduce upload and dashboard management
The Blazer controllers have been refactored to inherit from a new \Blazer::BaseController\, which centralizes authentication, CSRF protection, and custom \before\_action\ hooks, while also skipping inherited application filters to ensure isolation. This change introduces dedicated controllers for managing dashboards (\DashboardsController\) and file uploads (\UploadsController\), enabling users to create, refresh, and edit dashboards and to upload CSV files for ad-hoc querying. The \QueriesController\ has been updated to support forking queries, handling upload-based data sources, and utilizing the new base controller's variable processing and smart variable parsing logic.
app/controllers · high confidence
Refactored query helper and added image/link detection
The \QueriesHelper\ has been renamed to \BaseHelper\ and its methods prefixed with \blazer\_\ (e.g., \title\ becomes \blazer\_title\, \format\_value\ becomes \blazer\_format\_value\). The \blazer\_format\_value\ method now detects if a string value is a URL; if the column name includes 'image' or the URL ends with an image extension (png, jpg, jpeg, gif) and the \Blazer.images\ setting is enabled, it renders the value as an image tag inside a link. Otherwise, URLs are rendered as standard links. Additionally, a new \blazer\_js\_var\ helper was added to safely output JavaScript variables, and \blazer\_series\_name\ handles nil series names.
app/helpers · high confidence
Support for Propshaft asset pipeline and improved CSP compatibility
The application layout now detects if the Propshaft asset pipeline is active and, if so, includes specific CSS and JavaScript assets (such as Tom Select, Chart.js, and Mapkick) individually with nonces to support Content Security Policy. For standard Sprockets setups, it continues to use the bundled application assets, also with nonces. Additionally, a favicon is now linked, and the root path is exposed to JavaScript via a nonce-protected tag.
app/views/layouts · high confidence
Updated Ace editor to version 1.14.0
The embedded Ace code editor library has been upgraded to version 1.14.0. This update replaces the previous version in the application's JavaScript assets, bringing in the latest features, bug fixes, and performance improvements provided by the Ace editor upstream.
app/assets/javascripts/blazer/ace · high confidence
Updated Blazer generator templates for v2.0 features and Rails compatibility
The Blazer installation generator has been updated to support new v2.0 capabilities and modern Rails conventions. The configuration template (config.yml.tt) now includes commented-out options for anomaly detection, forecasting, Slack webhooks, Mapbox integration, and file uploads, alongside existing features like smart variables and caching. The database migration templates (install.rb.tt and uploads.rb.tt) have been expanded to create tables for checks (with state, schedule, and slack\_channels), dashboards, and uploads, while also adding a creator reference to queries and dashboards. Additionally, the generator now uses the .tt extension for Thor templates and targets the current Rails migration version, replacing the previous minimal schema with a comprehensive setup.
lib/generators/blazer/templates · high confidence
Test coverage
Added adapter integration tests for multiple data sources; Added integration tests for Blazer core features; Added test configuration files for Blazer integration; New adapter test infrastructure and sample data.
Dependencies
Added CI gemfiles for Rails 7.2 and 8.0
New gemfiles (rails72.gemfile and rails80.gemfile) have been added to the gemfiles directory to support testing against Rails versions 7.2.0 and 8.0.0. These files configure the test environment with dependencies including minitest, combustion, pg, sqlite3, mysql2, trilogy, and sprockets-rails, enabling continuous integration checks for these specific Rails versions.
gemfiles · high confidence
Updated JavaScript dependencies and switched to Chart.js for charts
The Blazer JavaScript assets have been updated to use Chart.js v4.5.1 for rendering charts, replacing the previous Chartkick.js implementation. Additionally, the Sortable library has been updated to version 1.15.7, and the Ace editor configuration has been modernized to use separate module requirements for SQL syntax highlighting and language tools.
app/assets/javascripts/blazer · high confidence
Upgrade to Rails 7.2+ and modernize gem dependencies
The gem now requires Ruby 3.3+ and Rails 7.2+ (via railties and activerecord), dropping support for older versions. The dependency on the full 'rails' gem has been replaced with 'railties', and 'safely\_block' and 'csv' have been added as runtime dependencies. Development dependencies have been updated to include specific database adapters (pg, sqlite3, mysql2, trilogy) and testing tools (minitest, combustion, rake) to support the new CI matrix, while the gemspec has been cleaned up with updated metadata and file inclusions.
(dependencies) · high confidence
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
How this codebase got here
This is the PUBLIC form of this artifact. Findings are listed in full, but the details of SECURITY findings — which rule fired, in which file, on which line, and how to fix it — are deliberately withheld, and any secret-scanner results are excluded entirely. Where detail is absent here it was REMOVED FOR PUBLICATION; it is not missing from the analysis. The complete artifact is available from the repository owner.
Score
- CAI 52 → 47 (-5.5)
- Rubric changed (rubric-2026.08.15 → rubric-2026.09.15) — scores are not directly comparable.
Lenses
- Code Health 97 → 91 (-6.4)
- Architecture 96 → 66 (-29.9)
- Maturity 55 → 55 (-0.2)
- Readiness 26 → 65 (+38.9)
- Security 100 → 80 (-20.3)
- Domain Modelling 100 (new)
- Accessibility 27 (new)
Resolved (5)
- Coverage not measured — test suite did not build
- Dimension evaluation failed
- No exposed public API
- No tests found
- Test reliability not included
New (68)
- AthenaAdapter.run_statement (cognitive 27) (lib/blazer/adapters/athena_adapter.rb)
- AthenaAdapter.run_statement (cyclomatic 21) (lib/blazer/adapters/athena_adapter.rb)
- Banned license: anomaly_detection
- Check.update_state (cognitive 16) (app/models/blazer/check.rb)
- DataSource.quote (cognitive 17) (lib/blazer/data_source.rb)
- DataSource.run_statement (cognitive 21) (lib/blazer/data_source.rb)
- Duplicated block (12 lines × 2) (lib/blazer/adapters/salesforce_adapter.rb)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- …and 48 more
Changes since last survey
- 6 commits — 5 feature/other, 1 fixes
By area
- (root) — 2 commits
- app/views — 2 commits
- .github/workflows — 1 commit
- app/assets — 1 commit
Notable commits
- fix: Fixed error message when statusText not available - resolves #530 [skip ci]
- change: Added missing closing tag [skip ci]
- change: Updated changelog [skip ci]
- change: Updated checkout action [skip ci]
- change: Updated spacing [skip ci]
- change: Version bump to 3.5.2 [skip ci]
Architecture
- Containers 0 added · 0 removed · contexts 1 added · 0 removed · edges 0 added · 0 removed
Added bounded contexts (1)
- blazer
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
ankane/blazer was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.
About this page
- The score is its most recent published measurement, taken on 26 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
- Measured at commit 5ca0460e9ad86d6589eb8ae428d6138d2821d1ae — the exact code this score is about.
- Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
- Measured by watchdog.canine.dev using codehealth-analyzer preprod-7c1cb6328e11.