blazer 2.2.7 → 2.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of blazer might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/CHANGELOG.md +25 -0
- data/README.md +119 -167
- data/app/assets/stylesheets/blazer/application.css +4 -0
- data/app/controllers/blazer/base_controller.rb +8 -0
- data/app/controllers/blazer/dashboards_controller.rb +3 -1
- data/app/controllers/blazer/queries_controller.rb +119 -3
- data/app/controllers/blazer/uploads_controller.rb +147 -0
- data/app/models/blazer/query.rb +9 -2
- data/app/models/blazer/upload.rb +11 -0
- data/app/models/blazer/uploads_connection.rb +7 -0
- data/app/views/blazer/_nav.html.erb +3 -0
- data/app/views/blazer/checks/_form.html.erb +1 -1
- data/app/views/blazer/checks/index.html.erb +3 -0
- data/app/views/blazer/dashboards/_form.html.erb +1 -1
- data/app/views/blazer/dashboards/show.html.erb +1 -1
- data/app/views/blazer/queries/_caching.html.erb +16 -0
- data/app/views/blazer/queries/_cohorts.html.erb +48 -0
- data/app/views/blazer/queries/docs.html.erb +6 -0
- data/app/views/blazer/queries/home.html.erb +3 -0
- data/app/views/blazer/queries/run.html.erb +15 -17
- data/app/views/blazer/queries/show.html.erb +1 -1
- data/app/views/blazer/uploads/_form.html.erb +27 -0
- data/app/views/blazer/uploads/edit.html.erb +3 -0
- data/app/views/blazer/uploads/index.html.erb +55 -0
- data/app/views/blazer/uploads/new.html.erb +3 -0
- data/config/routes.rb +5 -0
- data/lib/blazer.rb +22 -0
- data/lib/blazer/adapters/base_adapter.rb +8 -0
- data/lib/blazer/adapters/hive_adapter.rb +45 -0
- data/lib/blazer/adapters/spark_adapter.rb +9 -0
- data/lib/blazer/adapters/sql_adapter.rb +64 -1
- data/lib/blazer/data_source.rb +1 -1
- data/lib/blazer/version.rb +1 -1
- data/lib/generators/blazer/templates/config.yml.tt +6 -0
- data/lib/generators/blazer/templates/install.rb.tt +1 -0
- data/lib/generators/blazer/templates/uploads.rb.tt +10 -0
- data/lib/generators/blazer/uploads_generator.rb +18 -0
- data/lib/tasks/blazer.rake +9 -0
- metadata +20 -7
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: b2a6413e7d7d49e280cbb8d6a880ec32c6c49452e69f980183b592bd927fa90a
         | 
| 4 | 
            +
              data.tar.gz: 2e988e2010ae919dbfbb7c4c922753425b16eb0ee1e6fe309789cb44a450d8f7
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 50fc2e2d4c430935e05d14df65aea648df86c4792e58007ff0f6015a5c58a5842db4f9d22d430ac7f84b094325d45c41406f67676d6ec3d3535266e47ebd53a0
         | 
| 7 | 
            +
              data.tar.gz: 3118830b6ab4198fe383615c09319d98619480e2f88dca117b92e99c228da82a5556f7a9948ad57dd45e788cacc20efec370e0eb68770919e5dab9909bd4f1ef
         | 
    
        data/CHANGELOG.md
    CHANGED
    
    | @@ -1,3 +1,28 @@ | |
| 1 | 
            +
            ## 2.4.1 (2021-01-25)
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            - Added cohorts for MySQL
         | 
| 4 | 
            +
            - Added support for Apache Hive and Apache Spark
         | 
| 5 | 
            +
            - Fixed deprecation warning with Active Record 6.1
         | 
| 6 | 
            +
             | 
| 7 | 
            +
            ## 2.4.0 (2020-12-15)
         | 
| 8 | 
            +
             | 
| 9 | 
            +
            - Added cohorts
         | 
| 10 | 
            +
            - Fixed broken routes for some applications
         | 
| 11 | 
            +
            - Forecasting and uploads are no longer experimental
         | 
| 12 | 
            +
             | 
| 13 | 
            +
            ## 2.3.1 (2020-11-23)
         | 
| 14 | 
            +
             | 
| 15 | 
            +
            - Improved column names for uploads
         | 
| 16 | 
            +
             | 
| 17 | 
            +
            ## 2.3.0 (2020-11-16)
         | 
| 18 | 
            +
             | 
| 19 | 
            +
            - Added support for archiving queries
         | 
| 20 | 
            +
            - Added experimental support for uploads
         | 
| 21 | 
            +
             | 
| 22 | 
            +
            ## 2.2.8 (2020-11-01)
         | 
| 23 | 
            +
             | 
| 24 | 
            +
            - Fixed error when deleting dashboard
         | 
| 25 | 
            +
             | 
| 1 26 | 
             
            ## 2.2.7 (2020-09-07)
         | 
| 2 27 |  | 
| 3 28 | 
             
            - Use `datetime` type in migration
         | 
    
        data/README.md
    CHANGED
    
    | @@ -4,7 +4,7 @@ Explore your data with SQL. Easily create charts and dashboards, and share them | |
| 4 4 |  | 
| 5 5 | 
             
            [Try it out](https://blazer.dokkuapp.com)
         | 
| 6 6 |  | 
| 7 | 
            -
            [](https://blazer.dokkuapp.com)
         | 
| 8 8 |  | 
| 9 9 | 
             
            Blazer is also available as a [Docker image](https://github.com/ankane/blazer-docker).
         | 
| 10 10 |  | 
| @@ -25,6 +25,12 @@ Blazer is also available as a [Docker image](https://github.com/ankane/blazer-do | |
| 25 25 | 
             
            - [Charts](#charts)
         | 
| 26 26 | 
             
            - [Dashboards](#dashboards)
         | 
| 27 27 | 
             
            - [Checks](#checks)
         | 
| 28 | 
            +
            - [Cohorts](#cohorts)
         | 
| 29 | 
            +
            - [Anomaly Detection](#anomaly-detection)
         | 
| 30 | 
            +
            - [Forecasting](#forecasting)
         | 
| 31 | 
            +
            - [Uploads](#uploads)
         | 
| 32 | 
            +
            - [Data Sources](#data-sources)
         | 
| 33 | 
            +
            - [Query Permissions](#query-permissions)
         | 
| 28 34 |  | 
| 29 35 | 
             
            ## Installation
         | 
| 30 36 |  | 
| @@ -383,6 +389,31 @@ SELECT * FROM ratings WHERE user_id IS NULL /* all ratings should have a user */ | |
| 383 389 |  | 
| 384 390 | 
             
            Then create check with optional emails if you want to be notified. Emails are sent when a check starts failing, and when it starts passing again.
         | 
| 385 391 |  | 
| 392 | 
            +
            ## Cohorts
         | 
| 393 | 
            +
             | 
| 394 | 
            +
            Create a cohort analysis from a simple SQL query. [Example](https://blazer.dokkuapp.com/queries/19-cohort-analysis-from-first-order)
         | 
| 395 | 
            +
             | 
| 396 | 
            +
            Create a query with the comment `/* cohort analysis */`. The result should have columns named `user_id` and `conversion_time` and optionally `cohort_time`.
         | 
| 397 | 
            +
             | 
| 398 | 
            +
            You can generate cohorts from the first conversion time:
         | 
| 399 | 
            +
             | 
| 400 | 
            +
            ```sql
         | 
| 401 | 
            +
            /* cohort analysis */
         | 
| 402 | 
            +
            SELECT user_id, created_at AS conversion_time FROM orders
         | 
| 403 | 
            +
            ```
         | 
| 404 | 
            +
             | 
| 405 | 
            +
            (the first conversion isn’t counted in the first time period with this format)
         | 
| 406 | 
            +
             | 
| 407 | 
            +
            Or from another time, like sign up:
         | 
| 408 | 
            +
             | 
| 409 | 
            +
            ```sql
         | 
| 410 | 
            +
            /* cohort analysis */
         | 
| 411 | 
            +
            SELECT users.id AS user_id, orders.created_at AS conversion_time, users.created_at AS cohort_time
         | 
| 412 | 
            +
            FROM users LEFT JOIN orders ON orders.user_id = users.id
         | 
| 413 | 
            +
            ```
         | 
| 414 | 
            +
             | 
| 415 | 
            +
            This feature requires PostgreSQL or MySQL.
         | 
| 416 | 
            +
             | 
| 386 417 | 
             
            ## Anomaly Detection
         | 
| 387 418 |  | 
| 388 419 | 
             
            Blazer supports two different approaches to anomaly detection.
         | 
| @@ -428,16 +459,33 @@ anomaly_checks: r | |
| 428 459 |  | 
| 429 460 | 
             
            If upgrading from version 1.4 or below, also follow the [upgrade instructions](#15).
         | 
| 430 461 |  | 
| 431 | 
            -
            If you’re on Heroku, follow  | 
| 462 | 
            +
            If you’re on Heroku, follow the additional instructions below.
         | 
| 463 | 
            +
             | 
| 464 | 
            +
            ### R on Heroku
         | 
| 465 | 
            +
             | 
| 466 | 
            +
            Add the [R buildpack](https://github.com/virtualstaticvoid/heroku-buildpack-r) to your app.
         | 
| 467 | 
            +
             | 
| 468 | 
            +
            ```sh
         | 
| 469 | 
            +
            heroku buildpacks:add --index 1 https://github.com/virtualstaticvoid/heroku-buildpack-r.git
         | 
| 470 | 
            +
            ```
         | 
| 471 | 
            +
             | 
| 472 | 
            +
            And create an `init.R` with:
         | 
| 473 | 
            +
             | 
| 474 | 
            +
            ```r
         | 
| 475 | 
            +
            if (!"AnomalyDetection" %in% installed.packages()) {
         | 
| 476 | 
            +
              install.packages("remotes")
         | 
| 477 | 
            +
              remotes::install_github("twitter/AnomalyDetection")
         | 
| 478 | 
            +
            }
         | 
| 479 | 
            +
            ```
         | 
| 480 | 
            +
             | 
| 481 | 
            +
            Commit and deploy away. The first deploy may take a few minutes.
         | 
| 432 482 |  | 
| 433 483 | 
             
            ## Forecasting
         | 
| 434 484 |  | 
| 435 | 
            -
            Blazer  | 
| 485 | 
            +
            Blazer supports for two different forecasting methods. [Example](https://blazer.dokkuapp.com/queries/18-forecast?forecast=t)
         | 
| 436 486 |  | 
| 437 487 | 
             
            A forecast link will appear for queries that return 2 columns with types timestamp and numeric.
         | 
| 438 488 |  | 
| 439 | 
            -
            [Example](https://blazer.dokkuapp.com/queries/18-forecast?forecast=t)
         | 
| 440 | 
            -
             | 
| 441 489 | 
             
            ### Prophet
         | 
| 442 490 |  | 
| 443 491 | 
             
            Add [prophet](https://github.com/ankane/prophet) to your Gemfile:
         | 
| @@ -468,6 +516,32 @@ And add to `config/blazer.yml`: | |
| 468 516 | 
             
            forecasting: trend
         | 
| 469 517 | 
             
            ```
         | 
| 470 518 |  | 
| 519 | 
            +
            ## Uploads
         | 
| 520 | 
            +
             | 
| 521 | 
            +
            Creating database tables from CSV files. [Example](https://blazer.dokkuapp.com/uploads)
         | 
| 522 | 
            +
             | 
| 523 | 
            +
            Run:
         | 
| 524 | 
            +
             | 
| 525 | 
            +
            ```sh
         | 
| 526 | 
            +
            rails generate blazer:uploads
         | 
| 527 | 
            +
            rails db:migrate
         | 
| 528 | 
            +
            ```
         | 
| 529 | 
            +
             | 
| 530 | 
            +
            And add to `config/blazer.yml`:
         | 
| 531 | 
            +
             | 
| 532 | 
            +
            ```yml
         | 
| 533 | 
            +
            uploads:
         | 
| 534 | 
            +
              url: postgres://...
         | 
| 535 | 
            +
              schema: uploads
         | 
| 536 | 
            +
              data_source: main
         | 
| 537 | 
            +
            ```
         | 
| 538 | 
            +
             | 
| 539 | 
            +
            This feature requires PostgreSQL. Create a new schema just for uploads.
         | 
| 540 | 
            +
             | 
| 541 | 
            +
            ```sql
         | 
| 542 | 
            +
            CREATE SCHEMA uploads;
         | 
| 543 | 
            +
            ```
         | 
| 544 | 
            +
             | 
| 471 545 | 
             
            ## Data Sources
         | 
| 472 546 |  | 
| 473 547 | 
             
            Blazer supports multiple data sources :tada:
         | 
| @@ -492,6 +566,8 @@ data_sources: | |
| 492 566 | 
             
            - [Amazon Athena](#amazon-athena)
         | 
| 493 567 | 
             
            - [Amazon Redshift](#amazon-redshift)
         | 
| 494 568 | 
             
            - [Apache Drill](#apache-drill)
         | 
| 569 | 
            +
            - [Apache Hive](#apache-hive)
         | 
| 570 | 
            +
            - [Apache Spark](#apache-spark)
         | 
| 495 571 | 
             
            - [Cassandra](#cassandra)
         | 
| 496 572 | 
             
            - [Druid](#druid)
         | 
| 497 573 | 
             
            - [Elasticsearch](#elasticsearch)
         | 
| @@ -553,6 +629,32 @@ data_sources: | |
| 553 629 | 
             
                url: http://hostname:8047
         | 
| 554 630 | 
             
            ```
         | 
| 555 631 |  | 
| 632 | 
            +
            ### Apache Hive
         | 
| 633 | 
            +
             | 
| 634 | 
            +
            Add [hexspace](https://github.com/ankane/hexspace) to your Gemfile and set:
         | 
| 635 | 
            +
             | 
| 636 | 
            +
            ```yml
         | 
| 637 | 
            +
            data_sources:
         | 
| 638 | 
            +
              my_source:
         | 
| 639 | 
            +
                adapter: hive
         | 
| 640 | 
            +
                url: sasl://user:password@hostname:10000/database
         | 
| 641 | 
            +
            ```
         | 
| 642 | 
            +
             | 
| 643 | 
            +
            Use a read-only user. Requires [HiveServer2](https://cwiki.apache.org/confluence/display/Hive/Setting+Up+HiveServer2).
         | 
| 644 | 
            +
             | 
| 645 | 
            +
            ### Apache Spark
         | 
| 646 | 
            +
             | 
| 647 | 
            +
            Add [hexspace](https://github.com/ankane/hexspace) to your Gemfile and set:
         | 
| 648 | 
            +
             | 
| 649 | 
            +
            ```yml
         | 
| 650 | 
            +
            data_sources:
         | 
| 651 | 
            +
              my_source:
         | 
| 652 | 
            +
                adapter: spark
         | 
| 653 | 
            +
                url: sasl://user:password@hostname:10000/database
         | 
| 654 | 
            +
            ```
         | 
| 655 | 
            +
             | 
| 656 | 
            +
            Use a read-only user. Requires the [Thrift server](https://spark.apache.org/docs/latest/sql-distributed-sql-engine.html).
         | 
| 657 | 
            +
             | 
| 556 658 | 
             
            ### Cassandra
         | 
| 557 659 |  | 
| 558 660 | 
             
            Add [cassandra-driver](https://github.com/datastax/ruby-driver) to your Gemfile and set:
         | 
| @@ -609,8 +711,6 @@ data_sources: | |
| 609 711 |  | 
| 610 712 | 
             
            ### InfluxDB
         | 
| 611 713 |  | 
| 612 | 
            -
            *Experimental*
         | 
| 613 | 
            -
             | 
| 614 714 | 
             
            Add [influxdb](https://github.com/influxdata/influxdb-ruby) to your Gemfile and set:
         | 
| 615 715 |  | 
| 616 716 | 
             
            ```yml
         | 
| @@ -644,8 +744,6 @@ data_sources: | |
| 644 744 |  | 
| 645 745 | 
             
            ### Neo4j
         | 
| 646 746 |  | 
| 647 | 
            -
            *Experimental*
         | 
| 648 | 
            -
             | 
| 649 747 | 
             
            Add [neo4j-core](https://github.com/neo4jrb/neo4j-core) to your Gemfile and set:
         | 
| 650 748 |  | 
| 651 749 | 
             
            ```yml
         | 
| @@ -687,8 +785,6 @@ data_sources: | |
| 687 785 |  | 
| 688 786 | 
             
            ### Salesforce
         | 
| 689 787 |  | 
| 690 | 
            -
            *Experimental*
         | 
| 691 | 
            -
             | 
| 692 788 | 
             
            Add [restforce](https://github.com/restforce/restforce) to your Gemfile and set:
         | 
| 693 789 |  | 
| 694 790 | 
             
            ```yml
         | 
| @@ -712,8 +808,6 @@ Supports [SOQL](https://developer.salesforce.com/docs/atlas.en-us.soql_sosl.meta | |
| 712 808 |  | 
| 713 809 | 
             
            ### Socrata Open Data API (SODA)
         | 
| 714 810 |  | 
| 715 | 
            -
            *Experimental*
         | 
| 716 | 
            -
             | 
| 717 811 | 
             
            Set:
         | 
| 718 812 |  | 
| 719 813 | 
             
            ```yml
         | 
| @@ -836,25 +930,14 @@ async: true | |
| 836 930 | 
             
            config.cache_store = :mem_cache_store
         | 
| 837 931 | 
             
            ```
         | 
| 838 932 |  | 
| 839 | 
            -
            ##  | 
| 933 | 
            +
            ## Archiving
         | 
| 840 934 |  | 
| 841 | 
            -
             | 
| 935 | 
            +
            Archive queries that haven’t been viewed in over 90 days.
         | 
| 842 936 |  | 
| 843 937 | 
             
            ```sh
         | 
| 844 | 
            -
             | 
| 845 | 
            -
            ```
         | 
| 846 | 
            -
             | 
| 847 | 
            -
            And create an `init.R` with:
         | 
| 848 | 
            -
             | 
| 849 | 
            -
            ```r
         | 
| 850 | 
            -
            if (!"AnomalyDetection" %in% installed.packages()) {
         | 
| 851 | 
            -
              install.packages("remotes")
         | 
| 852 | 
            -
              remotes::install_github("twitter/AnomalyDetection")
         | 
| 853 | 
            -
            }
         | 
| 938 | 
            +
            rake blazer:archive_queries
         | 
| 854 939 | 
             
            ```
         | 
| 855 940 |  | 
| 856 | 
            -
            Commit and deploy away. The first deploy may take a few minutes.
         | 
| 857 | 
            -
             | 
| 858 941 | 
             
            ## Content Security Policy
         | 
| 859 942 |  | 
| 860 943 | 
             
            If views are stuck with a `Loading...` message, there might be a problem with strict CSP settings in your app. This can be checked with Firefox or Chrome dev tools. You can allow Blazer to override these settings for its controllers with:
         | 
| @@ -865,164 +948,33 @@ override_csp: true | |
| 865 948 |  | 
| 866 949 | 
             
            ## Upgrading
         | 
| 867 950 |  | 
| 868 | 
            -
            ### 2. | 
| 869 | 
            -
             | 
| 870 | 
            -
            To use Slack notifications, create a migration
         | 
| 871 | 
            -
             | 
| 872 | 
            -
            ```sh
         | 
| 873 | 
            -
            rails g migration add_slack_channels_to_blazer_checks
         | 
| 874 | 
            -
            ```
         | 
| 875 | 
            -
             | 
| 876 | 
            -
            with:
         | 
| 877 | 
            -
             | 
| 878 | 
            -
            ```ruby
         | 
| 879 | 
            -
            add_column :blazer_checks, :slack_channels, :text
         | 
| 880 | 
            -
            ```
         | 
| 881 | 
            -
             | 
| 882 | 
            -
            ### 1.5
         | 
| 951 | 
            +
            ### 2.3
         | 
| 883 952 |  | 
| 884 | 
            -
            To  | 
| 953 | 
            +
            To archive queries, create a migration
         | 
| 885 954 |  | 
| 886 955 | 
             
            ```sh
         | 
| 887 | 
            -
            rails g migration  | 
| 956 | 
            +
            rails g migration add_status_to_blazer_queries
         | 
| 888 957 | 
             
            ```
         | 
| 889 958 |  | 
| 890 959 | 
             
            with:
         | 
| 891 960 |  | 
| 892 961 | 
             
            ```ruby
         | 
| 893 | 
            -
            add_column : | 
| 894 | 
            -
             | 
| 895 | 
            -
            commit_db_transaction
         | 
| 896 | 
            -
             | 
| 897 | 
            -
            Blazer::Check.reset_column_information
         | 
| 898 | 
            -
             | 
| 899 | 
            -
            Blazer::Check.where(invert: true).update_all(check_type: "missing_data")
         | 
| 900 | 
            -
            Blazer::Check.where(check_type: nil).update_all(check_type: "bad_data")
         | 
| 901 | 
            -
            ```
         | 
| 902 | 
            -
             | 
| 903 | 
            -
            ### 1.3
         | 
| 904 | 
            -
             | 
| 905 | 
            -
            To take advantage of the latest features, create a migration
         | 
| 906 | 
            -
             | 
| 907 | 
            -
            ```sh
         | 
| 908 | 
            -
            rails g migration upgrade_blazer_to_1_3
         | 
| 962 | 
            +
            add_column :blazer_queries, :status, :string
         | 
| 963 | 
            +
            Blazer::Query.update_all(status: "active")
         | 
| 909 964 | 
             
            ```
         | 
| 910 965 |  | 
| 911 | 
            -
             | 
| 912 | 
            -
             | 
| 913 | 
            -
            ```ruby
         | 
| 914 | 
            -
            add_column :blazer_dashboards, :creator_id, :integer
         | 
| 915 | 
            -
            add_column :blazer_checks, :creator_id, :integer
         | 
| 916 | 
            -
            add_column :blazer_checks, :invert, :boolean
         | 
| 917 | 
            -
            add_column :blazer_checks, :schedule, :string
         | 
| 918 | 
            -
            add_column :blazer_checks, :last_run_at, :timestamp
         | 
| 919 | 
            -
            commit_db_transaction
         | 
| 920 | 
            -
             | 
| 921 | 
            -
            Blazer::Check.update_all schedule: "1 hour"
         | 
| 922 | 
            -
            ```
         | 
| 923 | 
            -
             | 
| 924 | 
            -
            ### 1.0
         | 
| 925 | 
            -
             | 
| 926 | 
            -
            Blazer 1.0 brings a number of new features:
         | 
| 927 | 
            -
             | 
| 928 | 
            -
            - multiple data sources, including Redshift
         | 
| 929 | 
            -
            - dashboards
         | 
| 930 | 
            -
            - checks
         | 
| 931 | 
            -
             | 
| 932 | 
            -
            To upgrade, run:
         | 
| 933 | 
            -
             | 
| 934 | 
            -
            ```sh
         | 
| 935 | 
            -
            bundle update blazer
         | 
| 936 | 
            -
            ```
         | 
| 966 | 
            +
            ### 2.0
         | 
| 937 967 |  | 
| 938 | 
            -
             | 
| 968 | 
            +
            To use Slack notifications, create a migration
         | 
| 939 969 |  | 
| 940 970 | 
             
            ```sh
         | 
| 941 | 
            -
            rails g migration  | 
| 971 | 
            +
            rails g migration add_slack_channels_to_blazer_checks
         | 
| 942 972 | 
             
            ```
         | 
| 943 973 |  | 
| 944 974 | 
             
            with:
         | 
| 945 975 |  | 
| 946 976 | 
             
            ```ruby
         | 
| 947 | 
            -
            add_column : | 
| 948 | 
            -
            add_column :blazer_audits, :data_source, :string
         | 
| 949 | 
            -
             | 
| 950 | 
            -
            create_table :blazer_dashboards do |t|
         | 
| 951 | 
            -
              t.text :name
         | 
| 952 | 
            -
              t.timestamps
         | 
| 953 | 
            -
            end
         | 
| 954 | 
            -
             | 
| 955 | 
            -
            create_table :blazer_dashboard_queries do |t|
         | 
| 956 | 
            -
              t.references :dashboard
         | 
| 957 | 
            -
              t.references :query
         | 
| 958 | 
            -
              t.integer :position
         | 
| 959 | 
            -
              t.timestamps
         | 
| 960 | 
            -
            end
         | 
| 961 | 
            -
             | 
| 962 | 
            -
            create_table :blazer_checks do |t|
         | 
| 963 | 
            -
              t.references :query
         | 
| 964 | 
            -
              t.string :state
         | 
| 965 | 
            -
              t.text :emails
         | 
| 966 | 
            -
              t.timestamps
         | 
| 967 | 
            -
            end
         | 
| 968 | 
            -
            ```
         | 
| 969 | 
            -
             | 
| 970 | 
            -
            And run:
         | 
| 971 | 
            -
             | 
| 972 | 
            -
            ```sh
         | 
| 973 | 
            -
            rails db:migrate
         | 
| 974 | 
            -
            ```
         | 
| 975 | 
            -
             | 
| 976 | 
            -
            Update `config/blazer.yml` with:
         | 
| 977 | 
            -
             | 
| 978 | 
            -
            ```yml
         | 
| 979 | 
            -
            # see https://github.com/ankane/blazer for more info
         | 
| 980 | 
            -
             | 
| 981 | 
            -
            data_sources:
         | 
| 982 | 
            -
              main:
         | 
| 983 | 
            -
                url: <%= ENV["BLAZER_DATABASE_URL"] %>
         | 
| 984 | 
            -
             | 
| 985 | 
            -
                # statement timeout, in seconds
         | 
| 986 | 
            -
                # applies to PostgreSQL only
         | 
| 987 | 
            -
                # none by default
         | 
| 988 | 
            -
                # timeout: 15
         | 
| 989 | 
            -
             | 
| 990 | 
            -
                # time to cache results, in minutes
         | 
| 991 | 
            -
                # can greatly improve speed
         | 
| 992 | 
            -
                # none by default
         | 
| 993 | 
            -
                # cache: 60
         | 
| 994 | 
            -
             | 
| 995 | 
            -
                # wrap queries in a transaction for safety
         | 
| 996 | 
            -
                # not necessary if you use a read-only user
         | 
| 997 | 
            -
                # true by default
         | 
| 998 | 
            -
                # use_transaction: false
         | 
| 999 | 
            -
             | 
| 1000 | 
            -
                smart_variables:
         | 
| 1001 | 
            -
                  # zone_id: "SELECT id, name FROM zones ORDER BY name ASC"
         | 
| 1002 | 
            -
             | 
| 1003 | 
            -
                linked_columns:
         | 
| 1004 | 
            -
                  # user_id: "/admin/users/{value}"
         | 
| 1005 | 
            -
             | 
| 1006 | 
            -
                smart_columns:
         | 
| 1007 | 
            -
                  # user_id: "SELECT id, name FROM users WHERE id IN {value}"
         | 
| 1008 | 
            -
             | 
| 1009 | 
            -
            # create audits
         | 
| 1010 | 
            -
            audit: true
         | 
| 1011 | 
            -
             | 
| 1012 | 
            -
            # change the time zone
         | 
| 1013 | 
            -
            # time_zone: "Pacific Time (US & Canada)"
         | 
| 1014 | 
            -
             | 
| 1015 | 
            -
            # class name of the user model
         | 
| 1016 | 
            -
            # user_class: User
         | 
| 1017 | 
            -
             | 
| 1018 | 
            -
            # method name for the current user
         | 
| 1019 | 
            -
            # user_method: current_user
         | 
| 1020 | 
            -
             | 
| 1021 | 
            -
            # method name for the display name
         | 
| 1022 | 
            -
            # user_name: name
         | 
| 1023 | 
            -
             | 
| 1024 | 
            -
            # email to send checks from
         | 
| 1025 | 
            -
            # from_email: blazer@example.org
         | 
| 977 | 
            +
            add_column :blazer_checks, :slack_channels, :text
         | 
| 1026 978 | 
             
            ```
         | 
| 1027 979 |  | 
| 1028 980 | 
             
            ## History
         |