blazer 1.8.0 → 1.8.2
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of blazer might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/.gitattributes +1 -0
- data/CHANGELOG.md +11 -0
- data/CONTRIBUTING.md +37 -0
- data/ISSUE_TEMPLATE.md +7 -0
- data/README.md +66 -19
- data/app/assets/javascripts/blazer/Chart.js +8647 -6771
- data/app/assets/javascripts/blazer/queries.js +5 -2
- data/app/controllers/blazer/queries_controller.rb +1 -1
- data/app/models/blazer/audit.rb +1 -1
- data/app/models/blazer/check.rb +1 -1
- data/app/models/blazer/dashboard.rb +1 -1
- data/app/models/blazer/dashboard_query.rb +1 -1
- data/app/models/blazer/query.rb +2 -2
- data/app/models/blazer/record.rb +5 -0
- data/app/views/blazer/queries/_form.html.erb +1 -1
- data/app/views/blazer/queries/run.html.erb +2 -0
- data/app/views/blazer/queries/show.html.erb +1 -1
- data/blazer.gemspec +2 -1
- data/lib/blazer.rb +35 -5
- data/lib/blazer/adapters/athena_adapter.rb +128 -0
- data/lib/blazer/adapters/cassandra_adapter.rb +59 -0
- data/lib/blazer/adapters/druid_adapter.rb +67 -0
- data/lib/blazer/data_source.rb +18 -15
- data/lib/blazer/engine.rb +0 -15
- data/lib/blazer/version.rb +1 -1
- metadata +27 -6
data/lib/blazer/data_source.rb
CHANGED
@@ -4,24 +4,13 @@ module Blazer
|
|
4
4
|
class DataSource
|
5
5
|
extend Forwardable
|
6
6
|
|
7
|
-
attr_reader :id, :settings
|
7
|
+
attr_reader :id, :settings
|
8
8
|
|
9
9
|
def_delegators :adapter_instance, :schema, :tables, :preview_statement, :reconnect, :cost, :explain, :cancel
|
10
10
|
|
11
11
|
def initialize(id, settings)
|
12
12
|
@id = id
|
13
13
|
@settings = settings
|
14
|
-
|
15
|
-
unless settings["url"] || Rails.env.development? || settings["adapter"] == "bigquery"
|
16
|
-
raise Blazer::Error, "Empty url for data source: #{id}"
|
17
|
-
end
|
18
|
-
|
19
|
-
@adapter_instance =
|
20
|
-
if Blazer.adapters[adapter]
|
21
|
-
Blazer.adapters[adapter].new(self)
|
22
|
-
else
|
23
|
-
raise Blazer::Error, "Unknown adapter"
|
24
|
-
end
|
25
14
|
end
|
26
15
|
|
27
16
|
def adapter
|
@@ -154,9 +143,23 @@ module Blazer
|
|
154
143
|
|
155
144
|
protected
|
156
145
|
|
146
|
+
def adapter_instance
|
147
|
+
@adapter_instance ||= begin
|
148
|
+
unless settings["url"] || Rails.env.development? || ["bigquery", "athena"].include?(settings["adapter"])
|
149
|
+
raise Blazer::Error, "Empty url for data source: #{id}"
|
150
|
+
end
|
151
|
+
|
152
|
+
unless Blazer.adapters[adapter]
|
153
|
+
raise Blazer::Error, "Unknown adapter"
|
154
|
+
end
|
155
|
+
|
156
|
+
Blazer.adapters[adapter].new(self)
|
157
|
+
end
|
158
|
+
end
|
159
|
+
|
157
160
|
def run_statement_helper(statement, comment, run_id)
|
158
161
|
start_time = Time.now
|
159
|
-
columns, rows, error =
|
162
|
+
columns, rows, error = adapter_instance.run_statement(statement, comment)
|
160
163
|
duration = Time.now - start_time
|
161
164
|
|
162
165
|
cache_data = nil
|
@@ -165,7 +168,7 @@ module Blazer
|
|
165
168
|
cache_data = Marshal.dump([columns, rows, error, cache ? Time.now : nil]) rescue nil
|
166
169
|
end
|
167
170
|
|
168
|
-
if cache && cache_data &&
|
171
|
+
if cache && cache_data && adapter_instance.cachable?(statement)
|
169
172
|
Blazer.cache.write(statement_cache_key(statement), cache_data, expires_in: cache_expires_in.to_f * 60)
|
170
173
|
end
|
171
174
|
|
@@ -183,7 +186,7 @@ module Blazer
|
|
183
186
|
def detect_adapter
|
184
187
|
schema = settings["url"].to_s.split("://").first
|
185
188
|
case schema
|
186
|
-
when "mongodb", "presto"
|
189
|
+
when "mongodb", "presto", "cassandra"
|
187
190
|
schema
|
188
191
|
else
|
189
192
|
"sql"
|
data/lib/blazer/engine.rb
CHANGED
@@ -12,22 +12,7 @@ module Blazer
|
|
12
12
|
Blazer.user_name = Blazer.settings["user_name"] if Blazer.settings["user_name"]
|
13
13
|
Blazer.from_email = Blazer.settings["from_email"] if Blazer.settings["from_email"]
|
14
14
|
Blazer.before_action = Blazer.settings["before_action"] if Blazer.settings["before_action"]
|
15
|
-
|
16
|
-
Blazer.user_class ||= Blazer.settings.key?("user_class") ? Blazer.settings["user_class"] : (User rescue nil)
|
17
|
-
Blazer.user_method = Blazer.settings["user_method"]
|
18
|
-
if Blazer.user_class
|
19
|
-
Blazer.user_method ||= "current_#{Blazer.user_class.to_s.downcase.singularize}"
|
20
|
-
end
|
21
|
-
|
22
15
|
Blazer.check_schedules = Blazer.settings["check_schedules"] if Blazer.settings.key?("check_schedules")
|
23
|
-
|
24
|
-
if Blazer.user_class
|
25
|
-
options = Blazer::BELONGS_TO_OPTIONAL.merge(class_name: Blazer.user_class.to_s)
|
26
|
-
Blazer::Query.belongs_to :creator, options
|
27
|
-
Blazer::Dashboard.belongs_to :creator, options
|
28
|
-
Blazer::Check.belongs_to :creator, options
|
29
|
-
end
|
30
|
-
|
31
16
|
Blazer.cache ||= Rails.cache
|
32
17
|
|
33
18
|
Blazer.anomaly_checks = Blazer.settings["anomaly_checks"] || false
|
data/lib/blazer/version.rb
CHANGED
metadata
CHANGED
@@ -1,29 +1,43 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: blazer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.8.
|
4
|
+
version: 1.8.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andrew Kane
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2018-02-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
name:
|
14
|
+
name: railties
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
17
|
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '
|
19
|
+
version: '4'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '
|
26
|
+
version: '4'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: activerecord
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '4'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '4'
|
27
41
|
- !ruby/object:Gem::Dependency
|
28
42
|
name: chartkick
|
29
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -87,9 +101,12 @@ executables: []
|
|
87
101
|
extensions: []
|
88
102
|
extra_rdoc_files: []
|
89
103
|
files:
|
104
|
+
- ".gitattributes"
|
90
105
|
- ".gitignore"
|
91
106
|
- CHANGELOG.md
|
107
|
+
- CONTRIBUTING.md
|
92
108
|
- Gemfile
|
109
|
+
- ISSUE_TEMPLATE.md
|
93
110
|
- LICENSE.txt
|
94
111
|
- README.md
|
95
112
|
- Rakefile
|
@@ -140,6 +157,7 @@ files:
|
|
140
157
|
- app/models/blazer/dashboard.rb
|
141
158
|
- app/models/blazer/dashboard_query.rb
|
142
159
|
- app/models/blazer/query.rb
|
160
|
+
- app/models/blazer/record.rb
|
143
161
|
- app/views/blazer/_nav.html.erb
|
144
162
|
- app/views/blazer/_variables.html.erb
|
145
163
|
- app/views/blazer/check_mailer/failing_checks.html.erb
|
@@ -163,9 +181,12 @@ files:
|
|
163
181
|
- blazer.gemspec
|
164
182
|
- config/routes.rb
|
165
183
|
- lib/blazer.rb
|
184
|
+
- lib/blazer/adapters/athena_adapter.rb
|
166
185
|
- lib/blazer/adapters/base_adapter.rb
|
167
186
|
- lib/blazer/adapters/bigquery_adapter.rb
|
187
|
+
- lib/blazer/adapters/cassandra_adapter.rb
|
168
188
|
- lib/blazer/adapters/drill_adapter.rb
|
189
|
+
- lib/blazer/adapters/druid_adapter.rb
|
169
190
|
- lib/blazer/adapters/elasticsearch_adapter.rb
|
170
191
|
- lib/blazer/adapters/mongodb_adapter.rb
|
171
192
|
- lib/blazer/adapters/presto_adapter.rb
|
@@ -201,7 +222,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
201
222
|
version: '0'
|
202
223
|
requirements: []
|
203
224
|
rubyforge_project:
|
204
|
-
rubygems_version: 2.
|
225
|
+
rubygems_version: 2.6.13
|
205
226
|
signing_key:
|
206
227
|
specification_version: 4
|
207
228
|
summary: Explore your data with SQL. Easily create charts and dashboards, and share
|