logster 2.1.0 → 2.1.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.
Files changed (121) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +19 -19
  3. data/.rubocop.yml +1 -1
  4. data/.travis.yml +16 -16
  5. data/CHANGELOG.md +169 -166
  6. data/Gemfile +4 -4
  7. data/Guardfile +8 -8
  8. data/LICENSE.txt +22 -22
  9. data/README.md +99 -99
  10. data/Rakefile +21 -21
  11. data/assets/fonts/FontAwesome.otf +0 -0
  12. data/assets/fonts/fontawesome-webfont.eot +0 -0
  13. data/assets/fonts/fontawesome-webfont.svg +639 -639
  14. data/assets/fonts/fontawesome-webfont.ttf +0 -0
  15. data/assets/fonts/fontawesome-webfont.woff +0 -0
  16. data/assets/fonts/fontawesome-webfont.woff2 +0 -0
  17. data/assets/images/Icon-144_rounded.png +0 -0
  18. data/assets/images/Icon-144_square.png +0 -0
  19. data/assets/images/icon_144x144.png +0 -0
  20. data/assets/images/icon_64x64.png +0 -0
  21. data/assets/javascript/client-app.js +100 -100
  22. data/assets/stylesheets/client-app.css +0 -0
  23. data/build_client_app.sh +0 -0
  24. data/client-app/.editorconfig +20 -20
  25. data/client-app/.ember-cli +9 -9
  26. data/client-app/.eslintignore +19 -19
  27. data/client-app/.eslintrc.js +46 -46
  28. data/client-app/.gitignore +23 -23
  29. data/client-app/.travis.yml +27 -27
  30. data/client-app/.watchmanconfig +3 -3
  31. data/client-app/README.md +57 -57
  32. data/client-app/app/app.js +14 -14
  33. data/client-app/app/components/actions-menu.js +37 -37
  34. data/client-app/app/components/env-tab.js +44 -44
  35. data/client-app/app/components/message-info.js +65 -65
  36. data/client-app/app/components/message-row.js +45 -45
  37. data/client-app/app/components/panel-resizer.js +74 -74
  38. data/client-app/app/components/tab-contents.js +27 -27
  39. data/client-app/app/components/tab-link.js +5 -5
  40. data/client-app/app/components/tabbed-section.js +32 -32
  41. data/client-app/app/components/time-formatter.js +25 -25
  42. data/client-app/app/components/update-time.js +21 -21
  43. data/client-app/app/controllers/index.js +105 -105
  44. data/client-app/app/controllers/show.js +13 -13
  45. data/client-app/app/index.html +29 -29
  46. data/client-app/app/initializers/app-init.js +72 -72
  47. data/client-app/app/lib/preload.js +14 -14
  48. data/client-app/app/lib/utilities.js +140 -140
  49. data/client-app/app/models/message-collection.js +178 -178
  50. data/client-app/app/models/message.js +100 -100
  51. data/client-app/app/resolver.js +3 -3
  52. data/client-app/app/router.js +14 -14
  53. data/client-app/app/routes/index.js +57 -57
  54. data/client-app/app/routes/show.js +14 -14
  55. data/client-app/app/styles/app.css +521 -521
  56. data/client-app/app/templates/application.hbs +2 -2
  57. data/client-app/app/templates/components/actions-menu.hbs +12 -12
  58. data/client-app/app/templates/components/env-tab.hbs +10 -10
  59. data/client-app/app/templates/components/message-info.hbs +41 -41
  60. data/client-app/app/templates/components/message-row.hbs +15 -15
  61. data/client-app/app/templates/components/panel-resizer.hbs +3 -3
  62. data/client-app/app/templates/components/tabbed-section.hbs +10 -10
  63. data/client-app/app/templates/components/time-formatter.hbs +1 -1
  64. data/client-app/app/templates/index.hbs +58 -58
  65. data/client-app/app/templates/show.hbs +7 -7
  66. data/client-app/config/environment.js +51 -51
  67. data/client-app/config/optional-features.json +3 -3
  68. data/client-app/config/targets.js +18 -18
  69. data/client-app/ember-cli-build.js +29 -29
  70. data/client-app/package-lock.json +11365 -11365
  71. data/client-app/package.json +56 -56
  72. data/client-app/testem.js +25 -25
  73. data/client-app/tests/index.html +34 -34
  74. data/client-app/tests/integration/components/actions-menu-test.js +26 -26
  75. data/client-app/tests/integration/components/env-tab-test.js +73 -73
  76. data/client-app/tests/integration/components/message-info-test.js +26 -26
  77. data/client-app/tests/integration/components/message-row-test.js +26 -26
  78. data/client-app/tests/integration/components/panel-resizer-test.js +26 -26
  79. data/client-app/tests/integration/components/tab-contents-test.js +26 -26
  80. data/client-app/tests/integration/components/tab-link-test.js +26 -26
  81. data/client-app/tests/integration/components/tabbed-section-test.js +26 -26
  82. data/client-app/tests/integration/components/time-formatter-test.js +26 -26
  83. data/client-app/tests/integration/components/update-time-test.js +26 -26
  84. data/client-app/tests/test-helper.js +8 -8
  85. data/client-app/tests/unit/controllers/index-test.js +12 -12
  86. data/client-app/tests/unit/controllers/show-test.js +12 -12
  87. data/client-app/tests/unit/initializers/app-init-test.js +31 -31
  88. data/client-app/tests/unit/routes/index-test.js +11 -11
  89. data/client-app/tests/unit/routes/show-test.js +11 -11
  90. data/lib/examples/sidekiq_logster_reporter.rb +21 -21
  91. data/lib/logster.rb +54 -54
  92. data/lib/logster/base_store.rb +141 -141
  93. data/lib/logster/configuration.rb +25 -25
  94. data/lib/logster/defer_logger.rb +14 -14
  95. data/lib/logster/ignore_pattern.rb +65 -65
  96. data/lib/logster/logger.rb +113 -113
  97. data/lib/logster/message.rb +212 -212
  98. data/lib/logster/middleware/debug_exceptions.rb +26 -26
  99. data/lib/logster/middleware/reporter.rb +55 -55
  100. data/lib/logster/middleware/viewer.rb +221 -221
  101. data/lib/logster/rails/railtie.rb +63 -63
  102. data/lib/logster/redis_store.rb +566 -566
  103. data/lib/logster/scheduler.rb +54 -40
  104. data/lib/logster/version.rb +3 -3
  105. data/lib/logster/web.rb +14 -14
  106. data/logster.gemspec +35 -35
  107. data/test/examples/test_sidekiq_reporter_example.rb +46 -46
  108. data/test/fake_data/Gemfile +4 -4
  109. data/test/fake_data/generate.rb +10 -10
  110. data/test/logster/middleware/test_reporter.rb +19 -19
  111. data/test/logster/middleware/test_viewer.rb +96 -96
  112. data/test/logster/test_base_store.rb +147 -147
  113. data/test/logster/test_defer_logger.rb +34 -34
  114. data/test/logster/test_ignore_pattern.rb +41 -41
  115. data/test/logster/test_logger.rb +86 -86
  116. data/test/logster/test_message.rb +119 -119
  117. data/test/logster/test_redis_rate_limiter.rb +230 -230
  118. data/test/logster/test_redis_store.rb +720 -720
  119. data/test/test_helper.rb +38 -38
  120. data/vendor/assets/javascripts/logster.js.erb +39 -39
  121. metadata +2 -2
@@ -1,27 +1,27 @@
1
- ---
2
- language: node_js
3
- node_js:
4
- - "6"
5
-
6
- sudo: false
7
- dist: trusty
8
-
9
- addons:
10
- chrome: stable
11
-
12
- cache:
13
- directories:
14
- - $HOME/.npm
15
-
16
- env:
17
- global:
18
- # See https://git.io/vdao3 for details.
19
- - JOBS=1
20
-
21
- before_install:
22
- - npm config set spin false
23
-
24
- script:
25
- - npm run lint:hbs
26
- - npm run lint:js
27
- - npm test
1
+ ---
2
+ language: node_js
3
+ node_js:
4
+ - "6"
5
+
6
+ sudo: false
7
+ dist: trusty
8
+
9
+ addons:
10
+ chrome: stable
11
+
12
+ cache:
13
+ directories:
14
+ - $HOME/.npm
15
+
16
+ env:
17
+ global:
18
+ # See https://git.io/vdao3 for details.
19
+ - JOBS=1
20
+
21
+ before_install:
22
+ - npm config set spin false
23
+
24
+ script:
25
+ - npm run lint:hbs
26
+ - npm run lint:js
27
+ - npm test
@@ -1,3 +1,3 @@
1
- {
2
- "ignore_dirs": ["tmp", "dist"]
3
- }
1
+ {
2
+ "ignore_dirs": ["tmp", "dist"]
3
+ }
@@ -1,57 +1,57 @@
1
- # client-app
2
-
3
- This README outlines the details of collaborating on this Ember application.
4
- A short introduction of this app could easily go here.
5
-
6
- ## Prerequisites
7
-
8
- You will need the following things properly installed on your computer.
9
-
10
- * [Git](https://git-scm.com/)
11
- * [Node.js](https://nodejs.org/) (with npm)
12
- * [Ember CLI](https://ember-cli.com/)
13
- * [Google Chrome](https://google.com/chrome/)
14
-
15
- ## Installation
16
-
17
- * `git clone <repository-url>` this repository
18
- * `cd client-app`
19
- * `npm install`
20
-
21
- ## Running / Development
22
-
23
- * `ember serve`
24
- * Visit your app at [http://localhost:4200](http://localhost:4200).
25
- * Visit your tests at [http://localhost:4200/tests](http://localhost:4200/tests).
26
-
27
- ### Code Generators
28
-
29
- Make use of the many generators for code, try `ember help generate` for more details
30
-
31
- ### Running Tests
32
-
33
- * `ember test`
34
- * `ember test --server`
35
-
36
- ### Linting
37
-
38
- * `npm run lint:hbs`
39
- * `npm run lint:js`
40
- * `npm run lint:js -- --fix`
41
-
42
- ### Building
43
-
44
- * `ember build` (development)
45
- * `ember build --environment production` (production)
46
-
47
- ### Deploying
48
-
49
- Specify what it takes to deploy your app.
50
-
51
- ## Further Reading / Useful Links
52
-
53
- * [ember.js](https://emberjs.com/)
54
- * [ember-cli](https://ember-cli.com/)
55
- * Development Browser Extensions
56
- * [ember inspector for chrome](https://chrome.google.com/webstore/detail/ember-inspector/bmdblncegkenkacieihfhpjfppoconhi)
57
- * [ember inspector for firefox](https://addons.mozilla.org/en-US/firefox/addon/ember-inspector/)
1
+ # client-app
2
+
3
+ This README outlines the details of collaborating on this Ember application.
4
+ A short introduction of this app could easily go here.
5
+
6
+ ## Prerequisites
7
+
8
+ You will need the following things properly installed on your computer.
9
+
10
+ * [Git](https://git-scm.com/)
11
+ * [Node.js](https://nodejs.org/) (with npm)
12
+ * [Ember CLI](https://ember-cli.com/)
13
+ * [Google Chrome](https://google.com/chrome/)
14
+
15
+ ## Installation
16
+
17
+ * `git clone <repository-url>` this repository
18
+ * `cd client-app`
19
+ * `npm install`
20
+
21
+ ## Running / Development
22
+
23
+ * `ember serve`
24
+ * Visit your app at [http://localhost:4200](http://localhost:4200).
25
+ * Visit your tests at [http://localhost:4200/tests](http://localhost:4200/tests).
26
+
27
+ ### Code Generators
28
+
29
+ Make use of the many generators for code, try `ember help generate` for more details
30
+
31
+ ### Running Tests
32
+
33
+ * `ember test`
34
+ * `ember test --server`
35
+
36
+ ### Linting
37
+
38
+ * `npm run lint:hbs`
39
+ * `npm run lint:js`
40
+ * `npm run lint:js -- --fix`
41
+
42
+ ### Building
43
+
44
+ * `ember build` (development)
45
+ * `ember build --environment production` (production)
46
+
47
+ ### Deploying
48
+
49
+ Specify what it takes to deploy your app.
50
+
51
+ ## Further Reading / Useful Links
52
+
53
+ * [ember.js](https://emberjs.com/)
54
+ * [ember-cli](https://ember-cli.com/)
55
+ * Development Browser Extensions
56
+ * [ember inspector for chrome](https://chrome.google.com/webstore/detail/ember-inspector/bmdblncegkenkacieihfhpjfppoconhi)
57
+ * [ember inspector for firefox](https://addons.mozilla.org/en-US/firefox/addon/ember-inspector/)
@@ -1,14 +1,14 @@
1
- import Application from "@ember/application";
2
- import Resolver from "./resolver";
3
- import loadInitializers from "ember-load-initializers";
4
- import config from "./config/environment";
5
-
6
- const App = Application.extend({
7
- modulePrefix: config.modulePrefix,
8
- podModulePrefix: config.podModulePrefix,
9
- Resolver
10
- });
11
-
12
- loadInitializers(App, config.modulePrefix);
13
-
14
- export default App;
1
+ import Application from "@ember/application";
2
+ import Resolver from "./resolver";
3
+ import loadInitializers from "ember-load-initializers";
4
+ import config from "./config/environment";
5
+
6
+ const App = Application.extend({
7
+ modulePrefix: config.modulePrefix,
8
+ podModulePrefix: config.podModulePrefix,
9
+ Resolver
10
+ });
11
+
12
+ loadInitializers(App, config.modulePrefix);
13
+
14
+ export default App;
@@ -1,37 +1,37 @@
1
- import Component from "@ember/component";
2
- import { observer } from "@ember/object";
3
-
4
- export default Component.extend({
5
- showMenu: false,
6
- tagName: "span",
7
-
8
- init() {
9
- this._super(...arguments);
10
- this.bindingFunction = this.bindingFunction.bind(this);
11
- },
12
-
13
- bindingFunction(event) {
14
- const context = this.$()[0];
15
- if (!Em.$.contains(context, event.target) && context !== event.target) {
16
- this.set("showMenu", false);
17
- }
18
- },
19
-
20
- bindDocument: observer("showMenu", function() {
21
- const $document = Em.$(document);
22
- if (this.get("showMenu")) {
23
- $document.on("click", this.get("bindingFunction"));
24
- } else {
25
- $document.unbind("click", this.get("bindingFunction"));
26
- }
27
- }),
28
-
29
- actions: {
30
- expandMenu() {
31
- this.toggleProperty("showMenu");
32
- },
33
- share() {
34
- this.share();
35
- }
36
- }
37
- });
1
+ import Component from "@ember/component";
2
+ import { observer } from "@ember/object";
3
+
4
+ export default Component.extend({
5
+ showMenu: false,
6
+ tagName: "span",
7
+
8
+ init() {
9
+ this._super(...arguments);
10
+ this.bindingFunction = this.bindingFunction.bind(this);
11
+ },
12
+
13
+ bindingFunction(event) {
14
+ const context = this.$()[0];
15
+ if (!Em.$.contains(context, event.target) && context !== event.target) {
16
+ this.set("showMenu", false);
17
+ }
18
+ },
19
+
20
+ bindDocument: observer("showMenu", function() {
21
+ const $document = Em.$(document);
22
+ if (this.get("showMenu")) {
23
+ $document.on("click", this.get("bindingFunction"));
24
+ } else {
25
+ $document.unbind("click", this.get("bindingFunction"));
26
+ }
27
+ }),
28
+
29
+ actions: {
30
+ expandMenu() {
31
+ this.toggleProperty("showMenu");
32
+ },
33
+ share() {
34
+ this.share();
35
+ }
36
+ }
37
+ });
@@ -1,44 +1,44 @@
1
- import Component from "@ember/component";
2
- import { computed } from "@ember/object";
3
- import { buildHashString } from "client-app/lib/utilities";
4
-
5
- export default Component.extend({
6
- current: 1,
7
-
8
- didUpdateAttrs() {
9
- this.set("current", 1);
10
- },
11
-
12
- isEnvArray: computed("message.env", function() {
13
- return Array.isArray(this.get("message.env"));
14
- }),
15
-
16
- html: computed("isEnvArray", "current", function() {
17
- if (!this.get("isEnvArray")) {
18
- return buildHashString(this.get("message.env"));
19
- } else {
20
- const currentEnv = this.get("message.env")[this.get("current") - 1];
21
- return buildHashString(currentEnv);
22
- }
23
- }),
24
-
25
- disableBackButtons: computed("current", function() {
26
- return this.get("current") === 1;
27
- }),
28
-
29
- disableForwardButtons: computed("current", "message.env.length", function() {
30
- return this.get("current") === this.get("message.env.length");
31
- }),
32
-
33
- actions: {
34
- takeStep(dir) {
35
- const amount = dir === "back" ? -1 : 1;
36
- this.set("current", this.get("current") + amount);
37
- },
38
-
39
- bigJump(dir) {
40
- const newCurrent = dir === "back" ? 1 : this.get("message.env.length");
41
- this.set("current", newCurrent);
42
- }
43
- }
44
- });
1
+ import Component from "@ember/component";
2
+ import { computed } from "@ember/object";
3
+ import { buildHashString } from "client-app/lib/utilities";
4
+
5
+ export default Component.extend({
6
+ current: 1,
7
+
8
+ didUpdateAttrs() {
9
+ this.set("current", 1);
10
+ },
11
+
12
+ isEnvArray: computed("message.env", function() {
13
+ return Array.isArray(this.get("message.env"));
14
+ }),
15
+
16
+ html: computed("isEnvArray", "current", function() {
17
+ if (!this.get("isEnvArray")) {
18
+ return buildHashString(this.get("message.env"));
19
+ } else {
20
+ const currentEnv = this.get("message.env")[this.get("current") - 1];
21
+ return buildHashString(currentEnv);
22
+ }
23
+ }),
24
+
25
+ disableBackButtons: computed("current", function() {
26
+ return this.get("current") === 1;
27
+ }),
28
+
29
+ disableForwardButtons: computed("current", "message.env.length", function() {
30
+ return this.get("current") === this.get("message.env.length");
31
+ }),
32
+
33
+ actions: {
34
+ takeStep(dir) {
35
+ const amount = dir === "back" ? -1 : 1;
36
+ this.set("current", this.get("current") + amount);
37
+ },
38
+
39
+ bigJump(dir) {
40
+ const newCurrent = dir === "back" ? 1 : this.get("message.env.length");
41
+ this.set("current", newCurrent);
42
+ }
43
+ }
44
+ });
@@ -1,65 +1,65 @@
1
- import Component from "@ember/component";
2
- import { computed } from "@ember/object";
3
-
4
- export default Component.extend({
5
- buttons: computed("currentMessage.{canSolve,protected}", function() {
6
- const canSolve = this.get("currentMessage.canSolve");
7
- const protect = this.get("currentMessage.protected");
8
- const buttons = [];
9
-
10
- if (!protect && canSolve) {
11
- buttons.push({
12
- klass: "solve",
13
- action: "solve",
14
- icon: "check-square-o",
15
- label: "Solve",
16
- danger: true
17
- });
18
- }
19
-
20
- if (!protect) {
21
- buttons.push(
22
- {
23
- klass: "remove",
24
- action: "remove",
25
- icon: "trash-o",
26
- label: "Remove",
27
- danger: true
28
- },
29
- {
30
- klass: "protect",
31
- action: "protect",
32
- icon: "lock",
33
- label: "Protect"
34
- }
35
- );
36
- } else {
37
- buttons.push({
38
- klass: "unprotect",
39
- action: "unprotect",
40
- icon: "unlock",
41
- label: "Unprotect"
42
- });
43
- }
44
-
45
- return buttons;
46
- }),
47
-
48
- actions: {
49
- protect() {
50
- this.get("currentMessage").protect();
51
- },
52
- unprotect() {
53
- this.get("currentMessage").unprotect();
54
- },
55
- remove() {
56
- this.removeMessage(this.get("currentMessage"));
57
- },
58
- solve() {
59
- this.solveMessage(this.get("currentMessage"));
60
- },
61
- share() {
62
- window.location.pathname = this.get("currentMessage.shareUrl");
63
- }
64
- }
65
- });
1
+ import Component from "@ember/component";
2
+ import { computed } from "@ember/object";
3
+
4
+ export default Component.extend({
5
+ buttons: computed("currentMessage.{canSolve,protected}", function() {
6
+ const canSolve = this.get("currentMessage.canSolve");
7
+ const protect = this.get("currentMessage.protected");
8
+ const buttons = [];
9
+
10
+ if (!protect && canSolve) {
11
+ buttons.push({
12
+ klass: "solve",
13
+ action: "solve",
14
+ icon: "check-square-o",
15
+ label: "Solve",
16
+ danger: true
17
+ });
18
+ }
19
+
20
+ if (!protect) {
21
+ buttons.push(
22
+ {
23
+ klass: "remove",
24
+ action: "remove",
25
+ icon: "trash-o",
26
+ label: "Remove",
27
+ danger: true
28
+ },
29
+ {
30
+ klass: "protect",
31
+ action: "protect",
32
+ icon: "lock",
33
+ label: "Protect"
34
+ }
35
+ );
36
+ } else {
37
+ buttons.push({
38
+ klass: "unprotect",
39
+ action: "unprotect",
40
+ icon: "unlock",
41
+ label: "Unprotect"
42
+ });
43
+ }
44
+
45
+ return buttons;
46
+ }),
47
+
48
+ actions: {
49
+ protect() {
50
+ this.get("currentMessage").protect();
51
+ },
52
+ unprotect() {
53
+ this.get("currentMessage").unprotect();
54
+ },
55
+ remove() {
56
+ this.removeMessage(this.get("currentMessage"));
57
+ },
58
+ solve() {
59
+ this.solveMessage(this.get("currentMessage"));
60
+ },
61
+ share() {
62
+ window.location.pathname = this.get("currentMessage.shareUrl");
63
+ }
64
+ }
65
+ });