logster 2.11.4 → 2.12.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (92) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ci.yml +63 -12
  3. data/.gitignore +2 -0
  4. data/CHANGELOG.md +10 -5
  5. data/README.md +8 -0
  6. data/assets/javascript/.gitkeep +0 -0
  7. data/assets/javascript/chunk.143.2faa04830259ce9aa59a.js +22 -0
  8. data/assets/javascript/chunk.178.ca5ade1d8cbdbfbe6d72.js +22 -0
  9. data/assets/javascript/chunk.468.95dd450003497c781cb3.js +1213 -0
  10. data/assets/javascript/chunk.916.85a3fc9d873df80f5ea5.js +579 -0
  11. data/assets/javascript/client-app.js +1257 -280
  12. data/assets/javascript/vendor.js +4068 -3375
  13. data/assets/stylesheets/.gitkeep +0 -0
  14. data/assets/stylesheets/client-app.css +1 -1
  15. data/assets/stylesheets/vendor.css +1 -1
  16. data/build_client_app.sh +6 -8
  17. data/client-app/.editorconfig +0 -1
  18. data/client-app/.eslintignore +2 -0
  19. data/client-app/.eslintrc +10 -0
  20. data/client-app/.gitignore +1 -1
  21. data/client-app/.prettierignore +21 -0
  22. data/client-app/.prettierrc +1 -0
  23. data/client-app/.template-lintrc.js +10 -0
  24. data/client-app/README.md +4 -5
  25. data/client-app/app/app.js +2 -2
  26. data/client-app/app/components/actions-menu.js +21 -21
  27. data/client-app/app/components/back-trace.js +89 -90
  28. data/client-app/app/components/env-tab.js +41 -29
  29. data/client-app/app/components/message-info.js +78 -75
  30. data/client-app/app/components/message-row.js +20 -17
  31. data/client-app/app/components/page-nav.js +33 -24
  32. data/client-app/app/components/panel-resizer.js +53 -37
  33. data/client-app/app/components/patterns-list.js +101 -84
  34. data/client-app/app/components/tab-contents.js +15 -19
  35. data/client-app/app/components/tabbed-section.js +30 -18
  36. data/client-app/app/components/time-formatter.js +29 -18
  37. data/client-app/app/controllers/index.js +143 -119
  38. data/client-app/app/controllers/show.js +17 -13
  39. data/client-app/app/helpers/or.js +1 -1
  40. data/client-app/app/initializers/app-init.js +23 -34
  41. data/client-app/app/lib/decorators.js +4 -2
  42. data/client-app/app/lib/preload.js +7 -4
  43. data/client-app/app/lib/utilities.js +55 -54
  44. data/client-app/app/models/group.js +20 -15
  45. data/client-app/app/models/message-collection.js +153 -149
  46. data/client-app/app/models/message.js +60 -58
  47. data/client-app/app/models/pattern-item.js +24 -22
  48. data/client-app/app/router.js +2 -2
  49. data/client-app/app/routes/index.js +19 -12
  50. data/client-app/app/routes/settings.js +12 -10
  51. data/client-app/app/routes/show.js +6 -4
  52. data/client-app/app/services/events.js +4 -0
  53. data/client-app/app/styles/app.css +2 -0
  54. data/client-app/app/templates/application.hbs +1 -2
  55. data/client-app/app/templates/components/actions-menu.hbs +23 -8
  56. data/client-app/app/templates/components/back-trace.hbs +10 -3
  57. data/client-app/app/templates/components/env-tab.hbs +9 -7
  58. data/client-app/app/templates/components/message-info.hbs +65 -34
  59. data/client-app/app/templates/components/message-row.hbs +25 -8
  60. data/client-app/app/templates/components/page-nav.hbs +34 -10
  61. data/client-app/app/templates/components/panel-resizer.hbs +3 -3
  62. data/client-app/app/templates/components/patterns-list.hbs +54 -20
  63. data/client-app/app/templates/components/tabbed-section.hbs +12 -4
  64. data/client-app/app/templates/components/time-formatter.hbs +1 -1
  65. data/client-app/app/templates/index.hbs +100 -78
  66. data/client-app/app/templates/settings.hbs +30 -19
  67. data/client-app/app/templates/show.hbs +9 -8
  68. data/client-app/config/ember-cli-update.json +18 -0
  69. data/client-app/config/environment.js +13 -13
  70. data/client-app/config/icons.js +3 -3
  71. data/client-app/config/targets.js +16 -8
  72. data/client-app/ember-cli-build.js +4 -4
  73. data/client-app/package.json +41 -31
  74. data/client-app/testem.js +16 -17
  75. data/client-app/tests/index.html +8 -1
  76. data/client-app/tests/integration/components/back-trace-test.js +32 -26
  77. data/client-app/tests/integration/components/env-tab-test.js +79 -53
  78. data/client-app/tests/integration/components/message-info-test.js +25 -23
  79. data/client-app/tests/integration/components/patterns-list-test.js +14 -11
  80. data/client-app/tests/test-helper.js +8 -4
  81. data/client-app/tests/unit/controllers/index-test.js +32 -16
  82. data/client-app/tests/unit/controllers/show-test.js +5 -5
  83. data/client-app/tests/unit/routes/index-test.js +5 -5
  84. data/client-app/tests/unit/routes/show-test.js +5 -5
  85. data/client-app/yarn.lock +9673 -0
  86. data/lib/logster/version.rb +1 -1
  87. data/logster.gemspec +6 -3
  88. metadata +15 -6
  89. data/client-app/.eslintrc.js +0 -60
  90. data/client-app/.travis.yml +0 -28
  91. data/client-app/app/components/update-time.js +0 -21
  92. data/client-app/package-lock.json +0 -16639
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: fd7d6af8843a5dcdbb3c76333b1f4b4df43dfe7a618f3808ba9370a8df9f1e5e
4
- data.tar.gz: bff20d24965c8e4cabdacaf1f75546a065027dd73e0f2049938d09cfc289f62f
3
+ metadata.gz: a5d4640abe80e2cf5a80e7f2f11e6419b00a32130b35d62c05564d33e4ecf530
4
+ data.tar.gz: a974a5a37f0c210d804d97e496819189c331d5f10b426fee6b831345a289e68a
5
5
  SHA512:
6
- metadata.gz: 98f7087ec49c469275360d5a914e697271315b24d7e922bbcdcf6ff55b4bf3d8094c915d1b2d001b4a23394fc2439fc5480f56b3b5230d8a20c512b3698331a7
7
- data.tar.gz: 80e2a27ae16b6eea5ab5239c51e2d40dfc634bb9ff8c62d85365297f4a5d850b3f9d63d0f548d7503dce2deefe9917617bc7f11899c8d4b7991ff27e05689347
6
+ metadata.gz: c0a4ce41d8e47036447f2849d8cbafc71982c0164164562174fa8ef7a5a1a446d4f55f38eef6240404ce2ff23ae0ba451672ae3331a718a6d6e7535135ecc36d
7
+ data.tar.gz: 8acd7e2d037f7713d28b3dd1cbcc7624201016d398010b9e0dfb7806b4483100ec9fa502a7658a01b2fd5e18b095cb8de140337e28aad95b23a7925fcfd167f7
@@ -29,8 +29,18 @@ jobs:
29
29
  ruby-version: ${{ matrix.ruby }}
30
30
  bundler-cache: true
31
31
 
32
- - name: Ruby lint
33
- run: bundle exec rubocop
32
+ - uses: actions/setup-node@v3
33
+ with:
34
+ node-version: 18
35
+ cache: yarn
36
+ cache-dependency-path: client-app/yarn.lock
37
+
38
+ - name: Yarn install
39
+ working-directory: client-app
40
+ run: yarn install
41
+
42
+ - name: Build JS app
43
+ run: bash build_client_app.sh
34
44
 
35
45
  - name: Tests
36
46
  run: bundle exec rake test
@@ -43,30 +53,71 @@ jobs:
43
53
 
44
54
  - uses: actions/setup-node@v3
45
55
  with:
46
- node-version: 14
47
- cache: npm
48
- cache-dependency-path: client-app/package-lock.json
56
+ node-version: 18
57
+ cache: yarn
58
+ cache-dependency-path: client-app/yarn.lock
49
59
 
50
- - name: Npm install
60
+ - name: Yarn install
51
61
  working-directory: client-app
52
- run: npm install
62
+ run: yarn install
53
63
 
54
- - name: JS linting
64
+ - name: JS tests
55
65
  working-directory: client-app
56
- run: npm run lint
66
+ run: yarn test:ember
57
67
 
58
- - name: JS tests
68
+ linting:
69
+ runs-on: ubuntu-latest
70
+
71
+ steps:
72
+ - uses: actions/checkout@v3
73
+
74
+ - name: Setup ruby
75
+ uses: ruby/setup-ruby@v1
76
+ with:
77
+ ruby-version: 3.2
78
+ bundler-cache: true
79
+
80
+ - name: Ruby lint
81
+ run: bundle exec rubocop
82
+
83
+ - uses: actions/setup-node@v3
84
+ if: ${{ !cancelled() }}
85
+ with:
86
+ node-version: 18
87
+ cache: yarn
88
+ cache-dependency-path: client-app/yarn.lock
89
+
90
+ - name: Yarn install
91
+ if: ${{ !cancelled() }}
59
92
  working-directory: client-app
60
- run: npm test
93
+ run: yarn install
94
+
95
+ - name: JS linting
96
+ if: ${{ !cancelled() }}
97
+ working-directory: client-app
98
+ run: yarn lint
61
99
 
62
100
  publish:
63
101
  if: github.event_name == 'push' && github.ref == 'refs/heads/main'
64
- needs: [backend, frontend]
102
+ needs: [backend, frontend, linting]
65
103
  runs-on: ubuntu-latest
66
104
 
67
105
  steps:
68
106
  - uses: actions/checkout@v3
69
107
 
108
+ - uses: actions/setup-node@v3
109
+ with:
110
+ node-version: 18
111
+ cache: yarn
112
+ cache-dependency-path: client-app/yarn.lock
113
+
114
+ - name: Yarn install
115
+ working-directory: client-app
116
+ run: yarn install
117
+
118
+ - name: Build JS app
119
+ run: bash build_client_app.sh
120
+
70
121
  - name: Release Gem
71
122
  uses: discourse/publish-rubygems-action@v2
72
123
  env:
data/.gitignore CHANGED
@@ -1 +1,3 @@
1
1
  Gemfile.lock
2
+ assets/javascript/*.js
3
+ assets/stylesheets/*.css
data/CHANGELOG.md CHANGED
@@ -1,16 +1,21 @@
1
1
  # CHANGELOG
2
+
3
+ - 2023-03-03: 2.12.0
4
+
5
+ - DEV: Upgrade to Ember 3.28
6
+
2
7
  - 2023-01-30: 2.11.4
3
8
 
4
- - DEV: Various dependencies upgrade
5
- - FIX: Switch the `/messages.json` endpoint from `GET` to `POST`
9
+ - DEV: Various dependencies upgrade
10
+ - FIX: Switch the `/messages.json` endpoint from `GET` to `POST`
6
11
 
7
12
  - 2022-08-25: 2.11.3
8
13
 
9
- - DEV: Avoid deprecation warning in Redis 4.8 (#166)
14
+ - DEV: Avoid deprecation warning in Redis 4.8 (#166)
10
15
 
11
16
  - 2022-04-28: 2.11.2
12
17
 
13
- - FIX: store override level in thread local storage (Truffle Ruby compatability)
18
+ - FIX: store override level in thread local storage (Truffle Ruby compatibility)
14
19
 
15
20
  - 2022-04-21: 2.11.1
16
21
 
@@ -359,7 +364,7 @@
359
364
 
360
365
  - 2014-05-13: Version 0.0.8
361
366
 
362
- - Fix pacakging binstubs by mistake
367
+ - Fix packaging binstubs by mistake
363
368
 
364
369
  - 2014-05-13: Version 0.0.7
365
370
 
data/README.md CHANGED
@@ -63,12 +63,14 @@ Logster can be configured using `Logster.config`:
63
63
  - `Logster.config.gems_dir` : The value of this config is `Gem.dir + "/gems/"` by default. You probably don't need to change this config, but it's available in case your app gems are installed in a different directory. An example where this config is needed is Logster [demo site](http://logster.info/logs/): [https://github.com/discourse/logster/blob/master/website/sample.rb#L77](https://github.com/discourse/logster/blob/master/website/sample.rb#L77).
64
64
 
65
65
  ### Tracking Error Rate
66
+
66
67
  Logster allows you to register a callback when the rate of errors has exceeded
67
68
  a given limit.
68
69
 
69
70
  Tracking buckets available are one minute and an hour.
70
71
 
71
72
  Example:
73
+
72
74
  ```
73
75
  Logster.register_rate_limit_per_minute(Logger::WARN, 60) do |rate|
74
76
  puts "O no! The error rate is now #{rate} errors/min"
@@ -80,6 +82,7 @@ end
80
82
  ```
81
83
 
82
84
  ### Note
85
+
83
86
  If you are seeing the error `No such middleware to insert before: ActionDispatch::DebugExceptions` after installing logster,
84
87
  then you are using a conflicting gem like `better_errors` or `web-console`.
85
88
 
@@ -90,6 +93,7 @@ If you're using Logster with a non-rails app, you'll need to be careful that the
90
93
  The reason this doesn't happen in rails apps is because ActiveSupport has a monkey patch for [`#to_json`](https://github.com/rails/rails/blob/master/activesupport/lib/active_support/core_ext/object/json.rb).
91
94
 
92
95
  ### Mount using warden (devise)
96
+
93
97
  ```
94
98
  admin_constraint = lambda do |request|
95
99
  request.env['warden'].authenticate? and request.env['warden'].user.admin?
@@ -101,9 +105,11 @@ The reason this doesn't happen in rails apps is because ActiveSupport has a monk
101
105
  ```
102
106
 
103
107
  ### Mount using devise (method 2)
108
+
104
109
  Change :admin_user symbol with your devise user, example :user.
105
110
  In -> lambda block change admin? method with your authorization method
106
111
  Or simply define a admin? method in you user model.
112
+
107
113
  ```
108
114
  authenticate :admin_user, ->(u) { u.admin? } do
109
115
  mount Logster::Web, at: "/logs"
@@ -117,7 +123,9 @@ Logster.store = Logster::RedisStore.new(redis_connection)
117
123
  ```
118
124
 
119
125
  ### Heroku Deployment
126
+
120
127
  In case you may be using the `rails_12factor` gem in a production deployment on Heroku, the standard `Rails.logger` will not cooperate properly with Logster. Extend Rails.logger in your `config/application.rb` or `config/initializers/logster.rb` with:
128
+
121
129
  ```
122
130
  if Rails.env.production?
123
131
  Rails.logger.extend(ActiveSupport::Logger.broadcast(Logster.logger))
File without changes
@@ -0,0 +1,22 @@
1
+ var __ember_auto_import__
2
+ !function(){var e,r={976:function(e,r,n){var o,t
3
+ e.exports=(o=_eai_d,t=_eai_r,window.emberAutoImportDynamic=function(e){return 1===arguments.length?t("_eai_dyn_"+e):t("_eai_dynt_"+e)(Array.prototype.slice.call(arguments,1))},window.emberAutoImportSync=function(e){return t("_eai_sync_"+e)(Array.prototype.slice.call(arguments,1))},o("__v1-addons__early-boot-set__",[],(function(){})),void o("sinon",["__v1-addons__early-boot-set__"],(function(){return n(468)})))},249:function(e,r){window._eai_r=require,window._eai_d=define}},n={}
4
+ function o(e){var t=n[e]
5
+ if(void 0!==t)return t.exports
6
+ var i=n[e]={exports:{}}
7
+ return r[e].call(i.exports,i,i.exports,o),i.exports}o.m=r,e=[],o.O=function(r,n,t,i){if(!n){var u=1/0
8
+ for(c=0;c<e.length;c++){n=e[c][0],t=e[c][1],i=e[c][2]
9
+ for(var _=!0,a=0;a<n.length;a++)(!1&i||u>=i)&&Object.keys(o.O).every((function(e){return o.O[e](n[a])}))?n.splice(a--,1):(_=!1,i<u&&(u=i))
10
+ if(_){e.splice(c--,1)
11
+ var f=t()
12
+ void 0!==f&&(r=f)}}return r}i=i||0
13
+ for(var c=e.length;c>0&&e[c-1][2]>i;c--)e[c]=e[c-1]
14
+ e[c]=[n,t,i]},o.d=function(e,r){for(var n in r)o.o(r,n)&&!o.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:r[n]})},o.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)},o.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},function(){var e={143:0}
15
+ o.O.j=function(r){return 0===e[r]}
16
+ var r=function(r,n){var t,i,u=n[0],_=n[1],a=n[2],f=0
17
+ if(u.some((function(r){return 0!==e[r]}))){for(t in _)o.o(_,t)&&(o.m[t]=_[t])
18
+ if(a)var c=a(o)}for(r&&r(n);f<u.length;f++)i=u[f],o.o(e,i)&&e[i]&&e[i][0](),e[i]=0
19
+ return o.O(c)},n=self.webpackChunk_ember_auto_import_=self.webpackChunk_ember_auto_import_||[]
20
+ n.forEach(r.bind(null,0)),n.push=r.bind(null,n.push.bind(n))}(),o.O(void 0,[468],(function(){return o(249)}))
21
+ var t=o.O(void 0,[468],(function(){return o(976)}))
22
+ t=o.O(t),__ember_auto_import__=t}()
@@ -0,0 +1,22 @@
1
+ var __ember_auto_import__
2
+ !function(){var r,n={249:function(r,n){window._eai_r=require,window._eai_d=define},489:function(r,n,e){var t,o
3
+ r.exports=(t=_eai_d,o=_eai_r,window.emberAutoImportDynamic=function(r){return 1===arguments.length?o("_eai_dyn_"+r):o("_eai_dynt_"+r)(Array.prototype.slice.call(arguments,1))},window.emberAutoImportSync=function(r){return o("_eai_sync_"+r)(Array.prototype.slice.call(arguments,1))},t("__v1-addons__early-boot-set__",[],(function(){})),void t("qunit",["__v1-addons__early-boot-set__"],(function(){return e(916)})))}},e={}
4
+ function t(r){var o=e[r]
5
+ if(void 0!==o)return o.exports
6
+ var i=e[r]={id:r,loaded:!1,exports:{}}
7
+ return n[r].call(i.exports,i,i.exports,t),i.loaded=!0,i.exports}t.m=n,r=[],t.O=function(n,e,o,i){if(!e){var _=1/0
8
+ for(f=0;f<r.length;f++){e=r[f][0],o=r[f][1],i=r[f][2]
9
+ for(var u=!0,a=0;a<e.length;a++)(!1&i||_>=i)&&Object.keys(t.O).every((function(r){return t.O[r](e[a])}))?e.splice(a--,1):(u=!1,i<_&&(_=i))
10
+ if(u){r.splice(f--,1)
11
+ var c=o()
12
+ void 0!==c&&(n=c)}}return n}i=i||0
13
+ for(var f=r.length;f>0&&r[f-1][2]>i;f--)r[f]=r[f-1]
14
+ r[f]=[e,o,i]},t.o=function(r,n){return Object.prototype.hasOwnProperty.call(r,n)},t.nmd=function(r){return r.paths=[],r.children||(r.children=[]),r},function(){var r={178:0}
15
+ t.O.j=function(n){return 0===r[n]}
16
+ var n=function(n,e){var o,i,_=e[0],u=e[1],a=e[2],c=0
17
+ if(_.some((function(n){return 0!==r[n]}))){for(o in u)t.o(u,o)&&(t.m[o]=u[o])
18
+ if(a)var f=a(t)}for(n&&n(e);c<_.length;c++)i=_[c],t.o(r,i)&&r[i]&&r[i][0](),r[i]=0
19
+ return t.O(f)},e=self.webpackChunk_ember_auto_import_=self.webpackChunk_ember_auto_import_||[]
20
+ e.forEach(n.bind(null,0)),e.push=n.bind(null,e.push.bind(e))}(),t.O(void 0,[916],(function(){return t(249)}))
21
+ var o=t.O(void 0,[916],(function(){return t(489)}))
22
+ o=t.O(o),__ember_auto_import__=o}()