logster 2.6.2 → 2.9.0
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.
- checksums.yaml +4 -4
- data/.rubocop.yml +2 -1
- data/.travis.yml +0 -1
- data/CHANGELOG.md +23 -0
- data/README.md +14 -2
- data/assets/javascript/client-app.js +199 -164
- data/assets/javascript/vendor.js +3535 -4774
- data/assets/stylesheets/client-app.css +1 -1
- data/assets/stylesheets/vendor.css +1 -4
- data/build_client_app.sh +1 -1
- data/client-app/.eslintignore +0 -2
- data/client-app/.gitignore +0 -2
- data/client-app/app/components/message-info.js +11 -4
- data/client-app/app/controllers/index.js +5 -0
- data/client-app/app/lib/utilities.js +3 -1
- data/client-app/app/models/group.js +5 -1
- data/client-app/app/models/message.js +26 -5
- data/client-app/app/styles/app.css +20 -13
- data/client-app/app/templates/components/actions-menu.hbs +3 -3
- data/client-app/app/templates/components/back-trace.hbs +1 -1
- data/client-app/app/templates/components/message-info.hbs +1 -1
- data/client-app/app/templates/components/message-row.hbs +2 -2
- data/client-app/app/templates/components/page-nav.hbs +4 -4
- data/client-app/app/templates/components/patterns-list.hbs +4 -4
- data/client-app/app/templates/index.hbs +5 -5
- data/client-app/config/icons.js +26 -0
- data/client-app/package-lock.json +2160 -1933
- data/client-app/package.json +9 -8
- data/client-app/tests/integration/components/back-trace-test.js +1 -1
- data/client-app/tests/integration/components/env-tab-test.js +2 -2
- data/lib/logster/base_store.rb +8 -1
- data/lib/logster/configuration.rb +3 -1
- data/lib/logster/message.rb +2 -18
- data/lib/logster/middleware/reporter.rb +8 -1
- data/lib/logster/middleware/viewer.rb +8 -8
- data/lib/logster/redis_store.rb +22 -6
- data/lib/logster/version.rb +1 -1
- data/logster.gemspec +4 -5
- data/test/logster/middleware/test_reporter.rb +23 -0
- data/test/logster/test_base_store.rb +26 -0
- data/test/logster/test_group.rb +1 -1
- data/test/logster/test_message.rb +1 -7
- metadata +10 -29
- data/assets/fonts/FontAwesome.otf +0 -0
- data/assets/fonts/fontawesome-webfont.eot +0 -0
- data/assets/fonts/fontawesome-webfont.svg +0 -640
- data/assets/fonts/fontawesome-webfont.ttf +0 -0
- data/assets/fonts/fontawesome-webfont.woff +0 -0
- data/assets/fonts/fontawesome-webfont.woff2 +0 -0
data/client-app/package.json
CHANGED
@@ -19,30 +19,31 @@
|
|
19
19
|
},
|
20
20
|
"devDependencies": {
|
21
21
|
"@ember/optional-features": "^1.1.0",
|
22
|
+
"@fortawesome/ember-fontawesome": "^0.2.1",
|
23
|
+
"@fortawesome/free-brands-svg-icons": "^5.13.0",
|
24
|
+
"@fortawesome/free-regular-svg-icons": "^5.13.0",
|
25
|
+
"@fortawesome/free-solid-svg-icons": "^5.13.0",
|
22
26
|
"@glimmer/component": "^1.0.0",
|
23
|
-
"babel-eslint": "^10.0
|
27
|
+
"babel-eslint": "^10.1.0",
|
24
28
|
"broccoli-asset-rev": "^3.0.0",
|
25
29
|
"ember-auto-import": "^1.5.3",
|
26
30
|
"ember-cli": "^3.15.0",
|
27
31
|
"ember-cli-app-version": "^3.2.0",
|
28
|
-
"ember-cli-babel": "^7.
|
32
|
+
"ember-cli-babel": "^7.19.0",
|
29
33
|
"ember-cli-dependency-checker": "^3.2.0",
|
30
34
|
"ember-cli-eslint": "^5.1.0",
|
31
|
-
"ember-cli-htmlbars": "^4.
|
35
|
+
"ember-cli-htmlbars": "^4.3.1",
|
32
36
|
"ember-cli-inject-live-reload": "^2.0.1",
|
33
37
|
"ember-cli-sri": "^2.1.1",
|
34
|
-
"ember-cli-template-lint": "^1.0.0
|
38
|
+
"ember-cli-template-lint": "^1.0.0",
|
35
39
|
"ember-cli-uglify": "^3.0.0",
|
36
|
-
"ember-data": "~3.15.0",
|
37
40
|
"ember-export-application-global": "^2.0.1",
|
38
|
-
"ember-fetch": "^7.0.0",
|
39
|
-
"ember-font-awesome": "^4.0.0-rc.4",
|
40
41
|
"ember-load-initializers": "^2.1.1",
|
41
42
|
"ember-maybe-import-regenerator": "^0.1.6",
|
42
43
|
"ember-qunit": "^4.6.0",
|
43
44
|
"ember-resolver": "^7.0.0",
|
44
45
|
"ember-source": "^3.15.0",
|
45
|
-
"eslint-plugin-ember": "^7.
|
46
|
+
"eslint-plugin-ember": "^7.13.0",
|
46
47
|
"eslint-plugin-node": "^10.0.0",
|
47
48
|
"loader.js": "^4.7.0",
|
48
49
|
"prettier": "^1.19.1",
|
@@ -46,7 +46,7 @@ activerecord-6.0.1/lib/active_record/relation/finder_methods.rb:317:in \`exists?
|
|
46
46
|
|
47
47
|
let gemLine = find("div.backtrace-line");
|
48
48
|
assert.equal(
|
49
|
-
gemLine.textContent,
|
49
|
+
gemLine.textContent.trim(),
|
50
50
|
"activerecord-6.0.1/lib/active_record/relation/finder_methods.rb:317:in `exists?'",
|
51
51
|
"gem lines are truncated"
|
52
52
|
);
|
@@ -148,7 +148,7 @@ module("Integration | Component | env-tab", function(hooks) {
|
|
148
148
|
|
149
149
|
assert.equal(
|
150
150
|
defaultExpanded.children[1].textContent.trim(),
|
151
|
-
"
|
151
|
+
"vvv1, [vvv2]",
|
152
152
|
"list is expanded by default when its length is 3 or less"
|
153
153
|
);
|
154
154
|
|
@@ -165,7 +165,7 @@ module("Integration | Component | env-tab", function(hooks) {
|
|
165
165
|
const expanded = find(".env-table tr");
|
166
166
|
assert.equal(
|
167
167
|
expanded.children[1].textContent.trim(),
|
168
|
-
"
|
168
|
+
"value1, [value2, value3, value4]",
|
169
169
|
"expanded env keys shown correctly"
|
170
170
|
);
|
171
171
|
|
data/lib/logster/base_store.rb
CHANGED
@@ -152,9 +152,11 @@ module Logster
|
|
152
152
|
return if (!msg || (String === msg && msg.empty?)) && skip_empty
|
153
153
|
return if level && severity < level
|
154
154
|
|
155
|
+
msg = msg.inspect unless String === msg
|
156
|
+
msg = truncate_message(msg)
|
155
157
|
message = Logster::Message.new(severity, progname, msg, opts[:timestamp], count: opts[:count])
|
156
158
|
|
157
|
-
env = opts[:env] || {}
|
159
|
+
env = opts[:env]&.dup || {}
|
158
160
|
backtrace = opts[:backtrace]
|
159
161
|
if Hash === env && env[:backtrace]
|
160
162
|
# Special - passing backtrace through env
|
@@ -245,6 +247,11 @@ module Logster
|
|
245
247
|
|
246
248
|
private
|
247
249
|
|
250
|
+
def truncate_message(msg)
|
251
|
+
cap = Logster.config.maximum_message_length
|
252
|
+
msg.size <= cap ? msg : msg[0...cap] + "..."
|
253
|
+
end
|
254
|
+
|
248
255
|
def not_implemented
|
249
256
|
raise "Not Implemented"
|
250
257
|
end
|
@@ -17,7 +17,8 @@ module Logster
|
|
17
17
|
:enable_backtrace_links,
|
18
18
|
:gems_dir,
|
19
19
|
:max_env_bytes,
|
20
|
-
:max_env_count_per_message
|
20
|
+
:max_env_count_per_message,
|
21
|
+
:maximum_message_length
|
21
22
|
)
|
22
23
|
|
23
24
|
attr_writer :subdirectory
|
@@ -37,6 +38,7 @@ module Logster
|
|
37
38
|
@project_directories = []
|
38
39
|
@enable_backtrace_links = true
|
39
40
|
@gems_dir = Gem.dir + "/gems/"
|
41
|
+
@maximum_message_length = 2000
|
40
42
|
|
41
43
|
@allow_grouping = false
|
42
44
|
|
data/lib/logster/message.rb
CHANGED
@@ -4,8 +4,6 @@ require 'digest/sha1'
|
|
4
4
|
require 'securerandom'
|
5
5
|
|
6
6
|
module Logster
|
7
|
-
MAX_MESSAGE_LENGTH = 600
|
8
|
-
|
9
7
|
class Message
|
10
8
|
LOGSTER_ENV = "_logster_env".freeze
|
11
9
|
ALLOWED_ENV = %w{
|
@@ -30,7 +28,7 @@ module Logster
|
|
30
28
|
@timestamp = timestamp || get_timestamp
|
31
29
|
@severity = severity
|
32
30
|
@progname = progname
|
33
|
-
@message =
|
31
|
+
@message = message
|
34
32
|
@key = key || SecureRandom.hex
|
35
33
|
@backtrace = nil
|
36
34
|
@count = count || 1
|
@@ -57,10 +55,6 @@ module Logster
|
|
57
55
|
h
|
58
56
|
end
|
59
57
|
|
60
|
-
def message=(m)
|
61
|
-
@message = truncate_message(m)
|
62
|
-
end
|
63
|
-
|
64
58
|
def to_json(opts = nil)
|
65
59
|
exclude_env = Hash === opts && opts.delete(:exclude_env)
|
66
60
|
JSON.fast_generate(to_h(exclude_env: exclude_env), opts)
|
@@ -143,10 +137,6 @@ module Logster
|
|
143
137
|
end
|
144
138
|
end
|
145
139
|
|
146
|
-
def is_similar?(other)
|
147
|
-
self.grouping_key == other.grouping_key
|
148
|
-
end
|
149
|
-
|
150
140
|
def merge_similar_message(other)
|
151
141
|
self.first_timestamp ||= self.timestamp
|
152
142
|
self.timestamp = [self.timestamp, other.timestamp].max
|
@@ -311,14 +301,8 @@ module Logster
|
|
311
301
|
end
|
312
302
|
end
|
313
303
|
|
314
|
-
def truncate_message(msg)
|
315
|
-
return msg unless msg
|
316
|
-
msg = msg.inspect unless String === msg
|
317
|
-
msg.size <= MAX_MESSAGE_LENGTH ? msg : msg[0...MAX_MESSAGE_LENGTH] + "..."
|
318
|
-
end
|
319
|
-
|
320
304
|
def get_timestamp
|
321
|
-
(Time.
|
305
|
+
(Time.now.to_f * 1000).to_i
|
322
306
|
end
|
323
307
|
end
|
324
308
|
end
|
@@ -57,7 +57,14 @@ module Logster
|
|
57
57
|
message << "\nWindow Location: " << params["window_location"] if params["window_location"]
|
58
58
|
|
59
59
|
backtrace = params["stacktrace"] || ""
|
60
|
-
|
60
|
+
|
61
|
+
severity = ::Logger::Severity::WARN
|
62
|
+
if params["severity"] &&
|
63
|
+
::Logger::Severity.const_defined?(params["severity"].upcase)
|
64
|
+
severity = ::Logger::Severity.const_get(params["severity"].upcase)
|
65
|
+
end
|
66
|
+
|
67
|
+
Logster.store.report(severity,
|
61
68
|
"javascript",
|
62
69
|
message,
|
63
70
|
backtrace: backtrace,
|
@@ -48,7 +48,7 @@ module Logster
|
|
48
48
|
end
|
49
49
|
|
50
50
|
Logster.store.delete(message)
|
51
|
-
|
51
|
+
[301, { "Location" => "#{@logs_path}/" }, []]
|
52
52
|
|
53
53
|
elsif resource =~ /\/(un)?protect\/([0-9a-f]+)$/
|
54
54
|
off = $1 == "un"
|
@@ -61,15 +61,15 @@ module Logster
|
|
61
61
|
|
62
62
|
if off
|
63
63
|
if Logster.store.unprotect(key)
|
64
|
-
|
64
|
+
[301, { "Location" => "#{@logs_path}/show/#{key}?protected=false" }, []]
|
65
65
|
else
|
66
|
-
|
66
|
+
[500, {}, ["Failed"]]
|
67
67
|
end
|
68
68
|
else
|
69
69
|
if Logster.store.protect(key)
|
70
|
-
|
70
|
+
[301, { "Location" => "#{@logs_path}/show/#{key}?protected=true" }, []]
|
71
71
|
else
|
72
|
-
|
72
|
+
[500, {}, ["Failed"]]
|
73
73
|
end
|
74
74
|
end
|
75
75
|
|
@@ -83,14 +83,14 @@ module Logster
|
|
83
83
|
|
84
84
|
Logster.store.solve(key)
|
85
85
|
|
86
|
-
|
86
|
+
[301, { "Location" => "#{@logs_path}" }, []]
|
87
87
|
|
88
88
|
elsif resource =~ /\/clear$/
|
89
89
|
if env[REQUEST_METHOD] != "POST"
|
90
90
|
return method_not_allowed("POST")
|
91
91
|
end
|
92
92
|
Logster.store.clear
|
93
|
-
|
93
|
+
[200, {}, ["Messages cleared"]]
|
94
94
|
|
95
95
|
elsif resource =~ /\/show\/([0-9a-f]+)(\.json)?$/
|
96
96
|
key = $1
|
@@ -179,7 +179,7 @@ module Logster
|
|
179
179
|
end.first
|
180
180
|
return not_found("No such pattern group exists") if !group
|
181
181
|
group.messages_keys.each { |k| Logster.store.solve(k) }
|
182
|
-
|
182
|
+
[200, {}, []]
|
183
183
|
elsif resource == '/development-preload.json' && ENV["LOGSTER_ENV"] == "development"
|
184
184
|
[200, { "Content-Type" => "application/json; charset=utf-8" }, [JSON.generate(preloaded_data)]]
|
185
185
|
else
|
data/lib/logster/redis_store.rb
CHANGED
@@ -249,11 +249,11 @@ module Logster
|
|
249
249
|
envs = {}
|
250
250
|
@redis.eval(
|
251
251
|
BULK_ENV_GET_LUA,
|
252
|
-
keys: message_keys.map { |k| env_prefix(k) }
|
252
|
+
keys: message_keys.map { |k| env_prefix(k, with_namespace: true) }
|
253
253
|
).to_h.each do |k, v|
|
254
254
|
next if v.size == 0
|
255
255
|
parsed = v.size == 1 ? JSON.parse(v[0]) : v.map { |e| JSON.parse(e) }
|
256
|
-
envs[env_unprefix(k)] = parsed
|
256
|
+
envs[env_unprefix(k, with_namespace: true)] = parsed
|
257
257
|
end
|
258
258
|
end
|
259
259
|
messages = @redis.hmget(hash_key, message_keys).map! do |json|
|
@@ -647,12 +647,28 @@ module Logster
|
|
647
647
|
@redis.del(env_prefix(message_key))
|
648
648
|
end
|
649
649
|
|
650
|
-
def env_unprefix(key)
|
651
|
-
|
650
|
+
def env_unprefix(key, with_namespace: false)
|
651
|
+
prefix = ENV_PREFIX
|
652
|
+
if with_namespace && namespace
|
653
|
+
prefix = "#{namespace}:#{prefix}"
|
654
|
+
end
|
655
|
+
key.sub(prefix, "")
|
656
|
+
end
|
657
|
+
|
658
|
+
def env_prefix(key, with_namespace: false)
|
659
|
+
prefix = ENV_PREFIX
|
660
|
+
if with_namespace && namespace
|
661
|
+
prefix = "#{namespace}:#{prefix}"
|
662
|
+
end
|
663
|
+
prefix + key
|
652
664
|
end
|
653
665
|
|
654
|
-
def
|
655
|
-
|
666
|
+
def namespace
|
667
|
+
if @redis_prefix.respond_to?(:call)
|
668
|
+
@namespace ||= @redis_prefix.call
|
669
|
+
else
|
670
|
+
@namespace ||= @redis_prefix
|
671
|
+
end
|
656
672
|
end
|
657
673
|
end
|
658
674
|
end
|
data/lib/logster/version.rb
CHANGED
data/logster.gemspec
CHANGED
@@ -8,7 +8,7 @@ require 'logster/version'
|
|
8
8
|
Gem::Specification.new do |spec|
|
9
9
|
spec.name = "logster"
|
10
10
|
spec.version = Logster::VERSION
|
11
|
-
spec.authors = ["
|
11
|
+
spec.authors = ["Sam Saffron"]
|
12
12
|
spec.email = ["sam.saffron@gmail.com"]
|
13
13
|
spec.summary = %q{UI for viewing logs in Rack}
|
14
14
|
spec.description = %q{UI for viewing logs in Rack}
|
@@ -16,7 +16,7 @@ Gem::Specification.new do |spec|
|
|
16
16
|
spec.license = "MIT"
|
17
17
|
|
18
18
|
spec.files = `git ls-files -z`.split("\x0").reject do |f|
|
19
|
-
f.start_with?("
|
19
|
+
f.start_with?("website") || f.start_with?("bin")
|
20
20
|
end
|
21
21
|
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
22
22
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
@@ -32,7 +32,6 @@ Gem::Specification.new do |spec|
|
|
32
32
|
spec.add_development_dependency "guard"
|
33
33
|
spec.add_development_dependency "guard-minitest"
|
34
34
|
spec.add_development_dependency "timecop"
|
35
|
-
spec.add_development_dependency "byebug", "~> 11.
|
36
|
-
spec.add_development_dependency "rubocop", "~>
|
37
|
-
spec.add_development_dependency "rubocop-discourse"
|
35
|
+
spec.add_development_dependency "byebug", "~> 11.1.0"
|
36
|
+
spec.add_development_dependency "rubocop-discourse", "~> 2.1.2"
|
38
37
|
end
|
@@ -11,6 +11,7 @@ class TestReporter < Minitest::Test
|
|
11
11
|
Logster.store = Logster::RedisStore.new
|
12
12
|
Logster.store.clear_all
|
13
13
|
Logster.config.enable_js_error_reporting = true
|
14
|
+
Logster.config.rate_limit_error_reporting = true
|
14
15
|
end
|
15
16
|
|
16
17
|
def test_logs_errors
|
@@ -22,6 +23,28 @@ class TestReporter < Minitest::Test
|
|
22
23
|
assert_equal(1, Logster.store.count)
|
23
24
|
end
|
24
25
|
|
26
|
+
def test_logs_severity_of_errors
|
27
|
+
Logster.config.rate_limit_error_reporting = false
|
28
|
+
|
29
|
+
reporter = Logster::Middleware::Reporter.new(nil)
|
30
|
+
env = Rack::MockRequest.env_for("/logs/report_js_error?message=hello")
|
31
|
+
status, = reporter.call(env)
|
32
|
+
|
33
|
+
assert_equal(Logger::Severity::WARN, Logster.store.latest[-1].severity)
|
34
|
+
|
35
|
+
reporter = Logster::Middleware::Reporter.new(nil)
|
36
|
+
env = Rack::MockRequest.env_for("/logs/report_js_error?message=hello&severity=invalid")
|
37
|
+
status, = reporter.call(env)
|
38
|
+
|
39
|
+
assert_equal(Logger::Severity::WARN, Logster.store.latest[-1].severity)
|
40
|
+
|
41
|
+
reporter = Logster::Middleware::Reporter.new(nil)
|
42
|
+
env = Rack::MockRequest.env_for("/logs/report_js_error?message=hello&severity=error")
|
43
|
+
status, = reporter.call(env)
|
44
|
+
|
45
|
+
assert_equal(Logger::Severity::ERROR, Logster.store.latest[-1].severity)
|
46
|
+
end
|
47
|
+
|
25
48
|
def test_respects_ban_on_errors
|
26
49
|
Logster.config.enable_js_error_reporting = false
|
27
50
|
|
@@ -162,4 +162,30 @@ class TestBaseStore < Minitest::Test
|
|
162
162
|
assert_includes(message.backtrace.lines.first, __method__.to_s)
|
163
163
|
end
|
164
164
|
end
|
165
|
+
|
166
|
+
def test_log_message_is_truncated_when_above_maximum_message_length
|
167
|
+
orig = Logster.config.maximum_message_length
|
168
|
+
Logster.config.maximum_message_length = 300
|
169
|
+
msg = @store.report(Logger::WARN, '', 'a' * 400)
|
170
|
+
# 3 is the ... at the end to indicate truncated message
|
171
|
+
assert_equal(300 + 3, msg.message.size)
|
172
|
+
|
173
|
+
Logster.config.maximum_message_length = 100
|
174
|
+
msg = @store.report(Logger::WARN, '', 'a' * 200)
|
175
|
+
assert_equal(100 + 3, msg.message.size)
|
176
|
+
ensure
|
177
|
+
Logster.config.maximum_message_length = orig
|
178
|
+
end
|
179
|
+
|
180
|
+
def test_chained_loggers_shouldnt_mutate_env_passed_to_them
|
181
|
+
logger = Logster::Logger.new(@store)
|
182
|
+
other_store = Logster::TestStore.new
|
183
|
+
other_logger = Logster::Logger.new(other_store)
|
184
|
+
logger.chain(other_logger)
|
185
|
+
logger.add(Logger::WARN, "this is warning", '', { env: { backtrace: '11' } })
|
186
|
+
[@store, other_store].each do |store|
|
187
|
+
assert_equal('11', store.reported.first.backtrace)
|
188
|
+
refute_includes(store.reported.first.env.keys.map(&:to_sym), :backtrace)
|
189
|
+
end
|
190
|
+
end
|
165
191
|
end
|
data/test/logster/test_group.rb
CHANGED
@@ -10,7 +10,7 @@ class TestGroup < MiniTest::Test
|
|
10
10
|
end
|
11
11
|
|
12
12
|
def test_from_json_works_correctly
|
13
|
-
time = (Time.
|
13
|
+
time = (Time.now.to_f * 1000).to_i - 5000
|
14
14
|
json = JSON.generate(
|
15
15
|
key: '/somekey/',
|
16
16
|
messages_keys: [111, 222, 333].map(&:to_s),
|
@@ -20,7 +20,7 @@ class TestMessage < MiniTest::Test
|
|
20
20
|
end
|
21
21
|
|
22
22
|
def test_populate_from_env_will_add_time_to_env_unless_it_already_exists
|
23
|
-
t = (Time.
|
23
|
+
t = (Time.now.to_f * 1000).to_i
|
24
24
|
msg = Logster::Message.new(0, '', 'test', t)
|
25
25
|
msg.populate_from_env({})
|
26
26
|
assert_equal(t, msg.env["time"])
|
@@ -146,12 +146,6 @@ class TestMessage < MiniTest::Test
|
|
146
146
|
refute_includes(msg.to_json(exclude_env: true), test_hash.to_json)
|
147
147
|
end
|
148
148
|
|
149
|
-
def test_title_is_truncated_when_too_large
|
150
|
-
msg = Logster::Message.new(0, "", "a" * 1000)
|
151
|
-
# 3 is the ... at the end to indicate truncated message
|
152
|
-
assert_equal(600 + 3, msg.message.size)
|
153
|
-
end
|
154
|
-
|
155
149
|
def test_drop_redundant_envs
|
156
150
|
message = Logster::Message.new(Logger::WARN, '', 'message')
|
157
151
|
message.env = [{ a: 4 }] * 10
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: logster
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.9.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
|
-
-
|
7
|
+
- Sam Saffron
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-06-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -114,42 +114,28 @@ dependencies:
|
|
114
114
|
requirements:
|
115
115
|
- - "~>"
|
116
116
|
- !ruby/object:Gem::Version
|
117
|
-
version: 11.
|
117
|
+
version: 11.1.0
|
118
118
|
type: :development
|
119
119
|
prerelease: false
|
120
120
|
version_requirements: !ruby/object:Gem::Requirement
|
121
121
|
requirements:
|
122
122
|
- - "~>"
|
123
123
|
- !ruby/object:Gem::Version
|
124
|
-
version: 11.
|
124
|
+
version: 11.1.0
|
125
125
|
- !ruby/object:Gem::Dependency
|
126
|
-
name: rubocop
|
126
|
+
name: rubocop-discourse
|
127
127
|
requirement: !ruby/object:Gem::Requirement
|
128
128
|
requirements:
|
129
129
|
- - "~>"
|
130
130
|
- !ruby/object:Gem::Version
|
131
|
-
version:
|
131
|
+
version: 2.1.2
|
132
132
|
type: :development
|
133
133
|
prerelease: false
|
134
134
|
version_requirements: !ruby/object:Gem::Requirement
|
135
135
|
requirements:
|
136
136
|
- - "~>"
|
137
137
|
- !ruby/object:Gem::Version
|
138
|
-
version:
|
139
|
-
- !ruby/object:Gem::Dependency
|
140
|
-
name: rubocop-discourse
|
141
|
-
requirement: !ruby/object:Gem::Requirement
|
142
|
-
requirements:
|
143
|
-
- - ">="
|
144
|
-
- !ruby/object:Gem::Version
|
145
|
-
version: '0'
|
146
|
-
type: :development
|
147
|
-
prerelease: false
|
148
|
-
version_requirements: !ruby/object:Gem::Requirement
|
149
|
-
requirements:
|
150
|
-
- - ">="
|
151
|
-
- !ruby/object:Gem::Version
|
152
|
-
version: '0'
|
138
|
+
version: 2.1.2
|
153
139
|
description: UI for viewing logs in Rack
|
154
140
|
email:
|
155
141
|
- sam.saffron@gmail.com
|
@@ -166,12 +152,6 @@ files:
|
|
166
152
|
- LICENSE.txt
|
167
153
|
- README.md
|
168
154
|
- Rakefile
|
169
|
-
- assets/fonts/FontAwesome.otf
|
170
|
-
- assets/fonts/fontawesome-webfont.eot
|
171
|
-
- assets/fonts/fontawesome-webfont.svg
|
172
|
-
- assets/fonts/fontawesome-webfont.ttf
|
173
|
-
- assets/fonts/fontawesome-webfont.woff
|
174
|
-
- assets/fonts/fontawesome-webfont.woff2
|
175
155
|
- assets/images/Icon-144_rounded.png
|
176
156
|
- assets/images/Icon-144_square.png
|
177
157
|
- assets/images/icon_144x144.png
|
@@ -236,6 +216,7 @@ files:
|
|
236
216
|
- client-app/app/templates/settings.hbs
|
237
217
|
- client-app/app/templates/show.hbs
|
238
218
|
- client-app/config/environment.js
|
219
|
+
- client-app/config/icons.js
|
239
220
|
- client-app/config/optional-features.json
|
240
221
|
- client-app/config/targets.js
|
241
222
|
- client-app/ember-cli-build.js
|
@@ -314,7 +295,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
314
295
|
- !ruby/object:Gem::Version
|
315
296
|
version: '0'
|
316
297
|
requirements: []
|
317
|
-
rubygems_version: 3.
|
298
|
+
rubygems_version: 3.1.2
|
318
299
|
signing_key:
|
319
300
|
specification_version: 4
|
320
301
|
summary: UI for viewing logs in Rack
|