logster 2.1.0 → 2.1.1

Sign up to get free protection for your applications and to get access to all the features.
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
+ });