sql-jarvis 1.8.0 → 1.9.6

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 4170e0206ecc56c82faabe4c32081c9af2ceb0c3
4
- data.tar.gz: 75e6b5926063b5035e8452dae7992230ed19cd2a
3
+ metadata.gz: f1955fca26a63e1f2ffdedb671c1fdf3f151a931
4
+ data.tar.gz: 5f46942561c29e99cc9406ebf013b3196ea94f6b
5
5
  SHA512:
6
- metadata.gz: 70ca90adf5d7b180a135d2dc8018c9436ef6bbb86135311f595e94bae58e30ba970d978fe71e149131e25985a6166e2dc73ec2d13341090e2a5b9291ac7316f9
7
- data.tar.gz: 168aa4bde1f3bc5d730165fd45a65c288bc8e7acc74a0791e704610cd64d11b19b4968f39aa755efd67cee27c7c7df6a10e5cc6a40388d086ff03460cb08da25
6
+ metadata.gz: 11f3e01c54004114a906921897a007412be4381d282025103895d359a4dcc0d57f33f98496c2f3d62fe17165ab3648905a8cbefa06a3394ec775f63c07481057
7
+ data.tar.gz: 51c7cadfdd95d77870a00551cbe70ce6aaef4f0d7b62acceef64c5c0e2bb0728b6391f3e83af8ae0001e01705734acb92d6a4b1d94596f73fae4f50a55f29230
data/.gitattributes ADDED
@@ -0,0 +1 @@
1
+ app/assets/* linguist-vendored
@@ -0,0 +1,7 @@
1
+ Hi,
2
+
3
+ Before creating an issue, please check out the Contributing Guide:
4
+
5
+ https://github.com/ankane/blazer/blob/master/CONTRIBUTING.md
6
+
7
+ Thanks!
data/CHANGELOG.md CHANGED
@@ -1,6 +1,22 @@
1
- ## 1.8.1 [unreleased]
1
+ ## 1.9.1 [unreleased]
2
+
3
+ - Fixed error with latest `google-cloud-bigquery`
4
+
5
+ ## 1.9.0
6
+
7
+ - Prompt developers to check custom `before_action`
8
+ - Better ordering on home page
9
+ - Added support for Snowflake
10
+
11
+ ## 1.8.2
12
+
13
+ - Added support for Cassandra
14
+ - Fixes for Druid
15
+
16
+ ## 1.8.1
2
17
 
3
18
  - Added support for Amazon Athena
19
+ - Added support for Druid
4
20
  - Fixed query cancellation
5
21
 
6
22
  ## 1.8.0
data/CONTRIBUTING.md ADDED
@@ -0,0 +1,42 @@
1
+ # Contributing
2
+
3
+ First, thanks for wanting to contribute. You’re awesome! :heart:
4
+
5
+ ## Help
6
+
7
+ We’re not able to provide support through GitHub Issues. If you’re looking for help with your code, try posting on [Stack Overflow](https://stackoverflow.com/).
8
+
9
+ All features should be documented. If you don’t see a feature in the docs, assume it doesn’t exist.
10
+
11
+ ## Bugs
12
+
13
+ Think you’ve discovered a bug?
14
+
15
+ 1. Search existing issues to see if it’s been reported.
16
+ 2. Try the `master` branch to make sure it hasn’t been fixed.
17
+
18
+ ```rb
19
+ gem "blazer", github: "ankane/blazer"
20
+ ```
21
+
22
+ If the above steps don’t help, create an issue. Include:
23
+
24
+ - Detailed steps to reproduce
25
+ - Complete backtraces for exceptions
26
+
27
+ ## New Features
28
+
29
+ If you’d like to discuss a new feature, create an issue and start the title with `[Idea]`.
30
+
31
+ ## Pull Requests
32
+
33
+ Fork the project and create a pull request. A few tips:
34
+
35
+ - Keep changes to a minimum. If you have multiple features or fixes, submit multiple pull requests.
36
+ - Follow the existing style. The code should read like it’s written by a single person.
37
+
38
+ Feel free to open an issue to get feedback on your idea before spending too much time on it.
39
+
40
+ ---
41
+
42
+ This contributing guide is released under [CCO](https://creativecommons.org/publicdomain/zero/1.0/) (public domain). Use it for your own project without attribution.
data/LICENSE.txt CHANGED
@@ -1,4 +1,4 @@
1
- Copyright (c) 2014 Andrew Kane
1
+ Copyright (c) 2014-2018 Andrew Kane
2
2
 
3
3
  MIT License
4
4
 
data/README.md CHANGED
@@ -4,9 +4,9 @@ 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
- [![Screenshot](https://blazerme.herokuapp.com/assets/screenshot-6ca3115a518b488026e48be83ba0d4c9.png)](https://blazer.dokkuapp.com)
7
+ [![Screenshot](https://blazer.dokkuapp.com/assets/screenshot-6ca3115a518b488026e48be83ba0d4c9.png)](https://blazer.dokkuapp.com)
8
8
 
9
- :envelope: [Get notified of updates](http://eepurl.com/cbUwsD)
9
+ :envelope: [Get notified of updates](https://eepurl.com/cbUwsD)
10
10
 
11
11
  :tangerine: Battle-tested at [Instacart](https://www.instacart.com/opensource)
12
12
 
@@ -37,8 +37,8 @@ gem 'blazer'
37
37
  Run:
38
38
 
39
39
  ```sh
40
- rails g blazer:install
41
- rake db:migrate
40
+ rails generate blazer:install
41
+ rails db:migrate
42
42
  ```
43
43
 
44
44
  And mount the dashboard in your `config/routes.rb`:
@@ -60,7 +60,7 @@ Blazer tries to protect against queries which modify data (by running each query
60
60
  Be sure to set a host in `config/environments/production.rb` for emails to work.
61
61
 
62
62
  ```ruby
63
- config.action_mailer.default_url_options = {host: "blazerme.herokuapp.com"}
63
+ config.action_mailer.default_url_options = {host: "blazer.dokkuapp.com"}
64
64
  ```
65
65
 
66
66
  Schedule checks to run (with cron, [Heroku Scheduler](https://elements.heroku.com/addons/scheduler), etc). The default options are every 5 minutes, 1 hour, or 1 day, which you can customize. For each of these options, set up a task to run.
@@ -123,7 +123,7 @@ Also, make sure authorization is enabled when you start the server.
123
123
 
124
124
  ### Sensitive Data
125
125
 
126
- To protect sensitive info like password hashes and access tokens, use views. Documentation coming soon.
126
+ Check out [Hypershield](https://github.com/ankane/hypershield) to shield sensitive data.
127
127
 
128
128
  ## Authentication
129
129
 
@@ -141,7 +141,7 @@ ENV["BLAZER_PASSWORD"] = "secret"
141
141
  ### Devise
142
142
 
143
143
  ```ruby
144
- authenticate :user, -> (user) { user.admin? } do
144
+ authenticate :user, ->(user) { user.admin? } do
145
145
  mount Blazer::Engine, at: "blazer"
146
146
  end
147
147
  ```
@@ -151,18 +151,20 @@ end
151
151
  Specify a `before_action` method to run in `blazer.yml`.
152
152
 
153
153
  ```yml
154
- before_action: require_admin
154
+ before_action_method: require_admin
155
155
  ```
156
156
 
157
- Then define the custom authentication method in your `application_controller.rb`.
157
+ You can define this method in your `ApplicationController`.
158
158
 
159
159
  ```ruby
160
160
  def require_admin
161
- # depending on your auth, maybe something like...
162
- current_user && current_user.admin?
161
+ # depending on your auth, something like...
162
+ redirect_to root_path unless current_user && current_user.admin?
163
163
  end
164
164
  ```
165
165
 
166
+ Be sure to render or redirect for unauthorized users.
167
+
166
168
  ## Queries
167
169
 
168
170
  ### Variables
@@ -173,7 +175,7 @@ Create queries with variables.
173
175
  SELECT * FROM users WHERE gender = {gender}
174
176
  ```
175
177
 
176
- Use `{start_time}` and `{end_time}` for time ranges. [Example](https://blazerme.herokuapp.com/queries/9-time-range-selector?start_time=1997-10-03T05%3A00%3A00%2B00%3A00&end_time=1997-10-04T04%3A59%3A59%2B00%3A00)
178
+ Use `{start_time}` and `{end_time}` for time ranges. [Example](https://blazer.dokkuapp.com/queries/9-time-range-selector?start_time=1997-10-03T05%3A00%3A00%2B00%3A00&end_time=1997-10-04T04%3A59%3A59%2B00%3A00)
177
179
 
178
180
  ```sql
179
181
  SELECT * FROM ratings WHERE rated_at >= {start_time} AND rated_at <= {end_time}
@@ -181,7 +183,7 @@ SELECT * FROM ratings WHERE rated_at >= {start_time} AND rated_at <= {end_time}
181
183
 
182
184
  ### Smart Variables
183
185
 
184
- [Example](https://blazerme.herokuapp.com/queries/1-smart-variable)
186
+ [Example](https://blazer.dokkuapp.com/queries/1-smart-variable)
185
187
 
186
188
  Suppose you have the query:
187
189
 
@@ -210,19 +212,19 @@ smart_variables:
210
212
 
211
213
  ### Linked Columns
212
214
 
213
- [Example](https://blazerme.herokuapp.com/queries/3-linked-column) - title column
215
+ [Example](https://blazer.dokkuapp.com/queries/3-linked-column) - title column
214
216
 
215
217
  Link results to other pages in your apps or around the web. Specify a column name and where it should link to. You can use the value of the result with `{value}`.
216
218
 
217
219
  ```yml
218
220
  linked_columns:
219
221
  user_id: "/admin/users/{value}"
220
- ip_address: "http://www.infosniper.net/index.php?ip_address={value}"
222
+ ip_address: "https://www.infosniper.net/index.php?ip_address={value}"
221
223
  ```
222
224
 
223
225
  ### Smart Columns
224
226
 
225
- [Example](https://blazerme.herokuapp.com/queries/2-smart-column) - occupation_id column
227
+ [Example](https://blazer.dokkuapp.com/queries/2-smart-column) - occupation_id column
226
228
 
227
229
  Suppose you have the query:
228
230
 
@@ -275,13 +277,13 @@ Blazer will automatically generate charts based on the types of the columns retu
275
277
 
276
278
  There are two ways to generate line charts.
277
279
 
278
- 2+ columns - timestamp, numeric(s) - [Example](https://blazerme.herokuapp.com/queries/4-line-chart-format-1)
280
+ 2+ columns - timestamp, numeric(s) - [Example](https://blazer.dokkuapp.com/queries/4-line-chart-format-1)
279
281
 
280
282
  ```sql
281
283
  SELECT date_trunc('week', created_at), COUNT(*) FROM users GROUP BY 1
282
284
  ```
283
285
 
284
- 3 columns - timestamp, string, numeric - [Example](https://blazerme.herokuapp.com/queries/5-line-chart-format-2)
286
+ 3 columns - timestamp, string, numeric - [Example](https://blazer.dokkuapp.com/queries/5-line-chart-format-2)
285
287
 
286
288
 
287
289
  ```sql
@@ -292,13 +294,13 @@ SELECT date_trunc('week', created_at), gender, COUNT(*) FROM users GROUP BY 1, 2
292
294
 
293
295
  There are also two ways to generate column charts.
294
296
 
295
- 2+ columns - string, numeric(s) - [Example](https://blazerme.herokuapp.com/queries/6-column-chart-format-1)
297
+ 2+ columns - string, numeric(s) - [Example](https://blazer.dokkuapp.com/queries/6-column-chart-format-1)
296
298
 
297
299
  ```sql
298
300
  SELECT gender, COUNT(*) FROM users GROUP BY 1
299
301
  ```
300
302
 
301
- 3 columns - string, string, numeric - [Example](https://blazerme.herokuapp.com/queries/7-column-chart-format-2)
303
+ 3 columns - string, string, numeric - [Example](https://blazer.dokkuapp.com/queries/7-column-chart-format-2)
302
304
 
303
305
  ```sql
304
306
  SELECT gender, zip_code, COUNT(*) FROM users GROUP BY 1, 2
@@ -314,7 +316,7 @@ SELECT x, y FROM table
314
316
 
315
317
  ### Maps
316
318
 
317
- Columns named `latitude` and `longitude` or `lat` and `lon` or `lat` and `lng` - [Example](https://blazerme.herokuapp.com/queries/15-map)
319
+ Columns named `latitude` and `longitude` or `lat` and `lon` or `lat` and `lng` - [Example](https://blazer.dokkuapp.com/queries/15-map)
318
320
 
319
321
  ```sql
320
322
  SELECT name, latitude, longitude FROM cities
@@ -324,7 +326,7 @@ To enable, get an access token from [Mapbox](https://www.mapbox.com/) and set `E
324
326
 
325
327
  ### Targets
326
328
 
327
- Use the column name `target` to draw a line for goals. [Example](https://blazerme.herokuapp.com/queries/8-target-line)
329
+ Use the column name `target` to draw a line for goals. [Example](https://blazer.dokkuapp.com/queries/8-target-line)
328
330
 
329
331
  ```sql
330
332
  SELECT date_trunc('week', created_at), COUNT(*) AS new_users, 100000 AS target FROM users GROUP BY 1
@@ -332,7 +334,7 @@ SELECT date_trunc('week', created_at), COUNT(*) AS new_users, 100000 AS target F
332
334
 
333
335
  ## Dashboards
334
336
 
335
- Create a dashboard with multiple queries. [Example](https://blazerme.herokuapp.com/dashboards/1-dashboard-demo)
337
+ Create a dashboard with multiple queries. [Example](https://blazer.dokkuapp.com/dashboards/1-dashboard-demo)
336
338
 
337
339
  If the query has a chart, the chart is shown. Otherwise, you’ll see a table.
338
340
 
@@ -340,7 +342,7 @@ If any queries have variables, they will show up on the dashboard.
340
342
 
341
343
  ## Checks
342
344
 
343
- Checks give you a centralized place to see the health of your data. [Example](https://blazerme.herokuapp.com/checks)
345
+ Checks give you a centralized place to see the health of your data. [Example](https://blazer.dokkuapp.com/checks)
344
346
 
345
347
  Create a query to identify bad rows.
346
348
 
@@ -392,19 +394,22 @@ data_sources:
392
394
 
393
395
  ### Full List
394
396
 
395
- - [PostgreSQL](#postgresql-1)
396
- - [MySQL](#mysql-1)
397
- - [SQL Server](#sql-server)
398
- - [Oracle](#oracle)
399
- - [IBM DB2 and Informix](#ibm-db2-and-informix)
400
- - [SQLite](#sqlite)
397
+ - [Amazon Athena](#amazon-athena)
401
398
  - [Amazon Redshift](#amazon-redshift)
402
- - [Amazon Athena](#amazon-athena-master) [master]
403
- - [Presto](#presto)
404
399
  - [Apache Drill](#apache-drill)
400
+ - [Cassandra](#cassandra)
401
+ - [Druid](#druid)
402
+ - [Elasticsearch](#elasticsearch) [beta]
405
403
  - [Google BigQuery](#google-bigquery)
404
+ - [IBM DB2 and Informix](#ibm-db2-and-informix)
406
405
  - [MongoDB](#mongodb-1)
407
- - [Elasticsearch](#elasticsearch-beta) [beta]
406
+ - [MySQL](#mysql-1)
407
+ - [Oracle](#oracle)
408
+ - [PostgreSQL](#postgresql-1)
409
+ - [Presto](#presto)
410
+ - [Snowflake](#snowflake)
411
+ - [SQLite](#sqlite)
412
+ - [SQL Server](#sql-server)
408
413
 
409
414
  You can also [create an adapter](#creating-an-adapter) for any other data store.
410
415
 
@@ -416,128 +421,162 @@ data_sources:
416
421
  url: <%= ENV["BLAZER_MY_SOURCE_URL"] %>
417
422
  ```
418
423
 
419
- ### PostgreSQL
424
+ ### Amazon Athena
420
425
 
421
- Add [pg](https://bitbucket.org/ged/ruby-pg/wiki/Home) to your Gemfile (if it’s not there) and set:
426
+ Add [aws-sdk-athena](https://github.com/aws/aws-sdk-ruby) and [aws-sdk-glue](https://github.com/aws/aws-sdk-ruby) to your Gemfile and set:
422
427
 
423
428
  ```yml
424
429
  data_sources:
425
430
  my_source:
426
- url: postgres://user:password@hostname:5432/database
431
+ adapter: athena
432
+ database: database
433
+ output_location: s3://some-bucket/
427
434
  ```
428
435
 
429
- ### MySQL
436
+ ### Amazon Redshift
430
437
 
431
- Add [mysql2](https://github.com/brianmario/mysql2) to your Gemfile (if it’s not there) and set:
438
+ Add [activerecord4-redshift-adapter](https://github.com/aamine/activerecord4-redshift-adapter) or [activerecord5-redshift-adapter](https://github.com/ConsultingMD/activerecord5-redshift-adapter) to your Gemfile and set:
432
439
 
433
440
  ```yml
434
441
  data_sources:
435
442
  my_source:
436
- url: mysql2://user:password@hostname:3306/database
443
+ url: redshift://user:password@hostname:5439/database
437
444
  ```
438
445
 
439
- ### SQL Server
446
+ ### Apache Drill
440
447
 
441
- Add [tiny_tds](https://github.com/rails-sqlserver/tiny_tds) and [activerecord-sqlserver-adapter](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter) to your Gemfile and set:
448
+ Add [drill-sergeant](https://github.com/ankane/drill-sergeant) to your Gemfile and set:
442
449
 
443
450
  ```yml
444
451
  data_sources:
445
452
  my_source:
446
- url: sqlserver://user:password@hostname:1433/database
453
+ adapter: drill
454
+ url: http://hostname:8047
447
455
  ```
448
456
 
449
- ### Oracle
457
+ ### Cassandra
450
458
 
451
- Use [activerecord-oracle_enhanced-adapter](https://github.com/rsim/oracle-enhanced).
459
+ Add [cassandra-driver](https://github.com/datastax/ruby-driver) to your Gemfile and set:
452
460
 
453
- ### IBM DB2 and Informix
461
+ ```yml
462
+ data_sources:
463
+ my_source:
464
+ url: cassandra://user:password@hostname:9042/keyspace
465
+ ```
454
466
 
455
- Use [ibm_db](https://github.com/ibmdb/ruby-ibmdb).
467
+ ### Druid
456
468
 
457
- ### SQLite
469
+ First, [enable SQL support](http://druid.io/docs/latest/querying/sql.html#configuration) on the broker.
458
470
 
459
- Add [sqlite3](https://github.com/sparklemotion/sqlite3-ruby) to your Gemfile and set:
471
+ Set:
460
472
 
461
473
  ```yml
462
474
  data_sources:
463
475
  my_source:
464
- url: sqlite3:path/to/database.sqlite3
476
+ adapter: druid
477
+ url: http://hostname:8082
465
478
  ```
466
479
 
467
- ### Amazon Redshift
480
+ ### Elasticsearch
468
481
 
469
- Add [activerecord4-redshift-adapter](https://github.com/aamine/activerecord4-redshift-adapter) or [activerecord5-redshift-adapter](https://github.com/ConsultingMD/activerecord5-redshift-adapter) to your Gemfile and set:
482
+ Add [elasticsearch](https://github.com/elastic/elasticsearch-ruby) to your Gemfile and set:
470
483
 
471
484
  ```yml
472
485
  data_sources:
473
486
  my_source:
474
- url: redshift://user:password@hostname:5439/database
487
+ adapter: elasticsearch
488
+ url: http://user:password@hostname:9200
475
489
  ```
476
490
 
477
- ### Amazon Athena [master]
491
+ ### Google BigQuery
478
492
 
479
- Add [aws-sdk](https://github.com/aws/aws-sdk-ruby) `~> 2` to your Gemfile and set:
493
+ Add [google-cloud-bigquery](https://github.com/GoogleCloudPlatform/google-cloud-ruby/tree/master/google-cloud-bigquery) to your Gemfile and set:
480
494
 
481
495
  ```yml
482
496
  data_sources:
483
497
  my_source:
484
- adapter: athena
485
- database: database
486
- output_location: s3://some-bucket/
498
+ adapter: bigquery
499
+ project: your-project
500
+ keyfile: path/to/keyfile.json
487
501
  ```
488
502
 
489
- ### Presto
503
+ ### IBM DB2 and Informix
490
504
 
491
- Add [presto-client](https://github.com/treasure-data/presto-client-ruby) to your Gemfile and set:
505
+ Use [ibm_db](https://github.com/ibmdb/ruby-ibmdb).
506
+
507
+ ### MongoDB
508
+
509
+ Add [mongo](https://github.com/mongodb/mongo-ruby-driver) to your Gemfile and set:
492
510
 
493
511
  ```yml
494
512
  data_sources:
495
513
  my_source:
496
- url: presto://user@hostname:8080/catalog
514
+ url: mongodb://user:password@hostname:27017/database
497
515
  ```
498
516
 
499
- ### Apache Drill
517
+ ### MySQL
500
518
 
501
- Add [drill-sergeant](https://github.com/ankane/drill-sergeant) to your Gemfile and set:
519
+ Add [mysql2](https://github.com/brianmario/mysql2) to your Gemfile (if it’s not there) and set:
502
520
 
503
521
  ```yml
504
522
  data_sources:
505
523
  my_source:
506
- adapter: drill
507
- url: http://hostname:8047
524
+ url: mysql2://user:password@hostname:3306/database
508
525
  ```
509
526
 
510
- ### Google BigQuery
527
+ ### Oracle
511
528
 
512
- Add [google-cloud-bigquery](https://github.com/GoogleCloudPlatform/google-cloud-ruby/tree/master/google-cloud-bigquery) to your Gemfile and set:
529
+ Use [activerecord-oracle_enhanced-adapter](https://github.com/rsim/oracle-enhanced).
530
+
531
+ ### PostgreSQL
532
+
533
+ Add [pg](https://bitbucket.org/ged/ruby-pg/wiki/Home) to your Gemfile (if it’s not there) and set:
513
534
 
514
535
  ```yml
515
536
  data_sources:
516
537
  my_source:
517
- adapter: bigquery
518
- project: your-project
519
- keyfile: path/to/keyfile.json
538
+ url: postgres://user:password@hostname:5432/database
520
539
  ```
521
540
 
522
- ### MongoDB
541
+ ### Presto
523
542
 
524
- Add [mongo](https://github.com/mongodb/mongo-ruby-driver) to your Gemfile and set:
543
+ Add [presto-client](https://github.com/treasure-data/presto-client-ruby) to your Gemfile and set:
525
544
 
526
545
  ```yml
527
546
  data_sources:
528
547
  my_source:
529
- url: mongodb://user:password@hostname:27017/database
548
+ url: presto://user@hostname:8080/catalog
530
549
  ```
531
550
 
532
- ### Elasticsearch [beta]
551
+ ### Snowflake
533
552
 
534
- Add [elasticsearch](https://github.com/elastic/elasticsearch-ruby) to your Gemfile and set:
553
+ First, install the [ODBC driver](https://docs.snowflake.net/manuals/user-guide/odbc.html). Add [odbc_adapter](https://github.com/localytics/odbc_adapter) to your Gemfile and set:
535
554
 
536
555
  ```yml
537
556
  data_sources:
538
557
  my_source:
539
- adapter: elasticsearch
540
- url: http://user:password@hostname:9200
558
+ adapter: snowflake
559
+ dsn: ProductionSnowflake
560
+ ```
561
+
562
+ ### SQLite
563
+
564
+ Add [sqlite3](https://github.com/sparklemotion/sqlite3-ruby) to your Gemfile and set:
565
+
566
+ ```yml
567
+ data_sources:
568
+ my_source:
569
+ url: sqlite3:path/to/database.sqlite3
570
+ ```
571
+
572
+ ### SQL Server
573
+
574
+ Add [tiny_tds](https://github.com/rails-sqlserver/tiny_tds) and [activerecord-sqlserver-adapter](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter) to your Gemfile and set:
575
+
576
+ ```yml
577
+ data_sources:
578
+ my_source:
579
+ url: sqlserver://user:password@hostname:1433/database
541
580
  ```
542
581
 
543
582
  ## Creating an Adapter
@@ -580,6 +619,10 @@ Have team members who want to learn SQL? Here are a few great, free resources.
580
619
 
581
620
  For an easy way to group by day, week, month, and more with correct time zones, check out [Groupdate](https://github.com/ankane/groupdate.sql).
582
621
 
622
+ ## Standalone Version
623
+
624
+ Looking for a standalone version? Check out [Ghost Blazer](https://github.com/buren/ghost_blazer).
625
+
583
626
  ## Anomaly Detection on Heroku
584
627
 
585
628
  Add the [R buildpack](https://github.com/virtualstaticvoid/heroku-buildpack-r) to your app.
@@ -692,7 +735,7 @@ end
692
735
  And run:
693
736
 
694
737
  ```sh
695
- rake db:migrate
738
+ rails db:migrate
696
739
  ```
697
740
 
698
741
  Update `config/blazer.yml` with:
@@ -761,7 +804,7 @@ View the [changelog](https://github.com/ankane/blazer/blob/master/CHANGELOG.md)
761
804
 
762
805
  Blazer uses a number of awesome open source projects, including [Rails](https://github.com/rails/rails/), [Vue.js](https://github.com/vuejs/vue), [jQuery](https://github.com/jquery/jquery), [Bootstrap](https://github.com/twbs/bootstrap), [Selectize](https://github.com/brianreavis/selectize.js), [StickyTableHeaders](https://github.com/jmosbech/StickyTableHeaders), [Stupid jQuery Table Sort](https://github.com/joequery/Stupid-Table-Plugin), and [Date Range Picker](https://github.com/dangrossman/bootstrap-daterangepicker).
763
806
 
764
- Demo data from [MovieLens](http://grouplens.org/datasets/movielens/).
807
+ Demo data from [MovieLens](https://grouplens.org/datasets/movielens/).
765
808
 
766
809
  ## Want to Make Blazer Better?
767
810