debugbar 0.0.1 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (84) hide show
  1. checksums.yaml +7 -0
  2. data/.prettierrc +6 -0
  3. data/LICENSE.txt +21 -0
  4. data/README.md +5 -0
  5. data/Rakefile +4 -0
  6. data/app/channels/debugbar/debugbar_channel.rb +26 -0
  7. data/app/controllers/debugbar/application_controller.rb +4 -0
  8. data/app/controllers/debugbar/assets_controller.rb +15 -0
  9. data/app/helpers/debugbar/tag_helpers.rb +19 -0
  10. data/app/models/debugbar/application_record.rb +5 -0
  11. data/client/.gitignore +25 -0
  12. data/client/README.md +0 -0
  13. data/client/dist/.vite/manifest.json +14 -0
  14. data/client/dist/assets/debugbar-u5mP-5-z.js +34 -0
  15. data/client/dist/assets/ruby-logo-kn_8RniZ.svg +946 -0
  16. data/client/index.html +78 -0
  17. data/client/package-lock.json +2393 -0
  18. data/client/package.json +32 -0
  19. data/client/postcss.config.js +6 -0
  20. data/client/src/App.vue +17 -0
  21. data/client/src/AppDemo.vue +29 -0
  22. data/client/src/AppDev.vue +20 -0
  23. data/client/src/Debugbar.vue +276 -0
  24. data/client/src/assets/rails-logo.svg +1 -0
  25. data/client/src/assets/ruby-logo.svg +946 -0
  26. data/client/src/components/TabButton.vue +32 -0
  27. data/client/src/components/panels/CachePanel.vue +41 -0
  28. data/client/src/components/panels/JobsPanel.vue +52 -0
  29. data/client/src/components/panels/JsonPanel.vue +15 -0
  30. data/client/src/components/panels/LogsPanel.vue +43 -0
  31. data/client/src/components/panels/MessagesPanel.vue +25 -0
  32. data/client/src/components/panels/ModelsPanel.vue +37 -0
  33. data/client/src/components/panels/Panel.vue +7 -0
  34. data/client/src/components/panels/RequestPanel.vue +98 -0
  35. data/client/src/components/queries/QueriesPanel.vue +17 -0
  36. data/client/src/components/queries/QueryItem.vue +65 -0
  37. data/client/src/components/ui/Foldable.vue +39 -0
  38. data/client/src/components/ui/KeyValueTable.vue +16 -0
  39. data/client/src/components/ui/Row.vue +14 -0
  40. data/client/src/components/ui/logo-ruby.vue +547 -0
  41. data/client/src/demo.ts +17 -0
  42. data/client/src/dev.ts +20 -0
  43. data/client/src/main.ts +17 -0
  44. data/client/src/models/Config.ts +27 -0
  45. data/client/src/models/Request.ts +183 -0
  46. data/client/src/stores/RequestsStore.ts +36 -0
  47. data/client/src/stores/configStore.ts +8 -0
  48. data/client/src/style.css +23 -0
  49. data/client/src/types.d.ts +9 -0
  50. data/client/src/vite-env.d.ts +1 -0
  51. data/client/tailwind.config.js +16 -0
  52. data/client/tsconfig.json +29 -0
  53. data/client/tsconfig.node.json +10 -0
  54. data/client/vite.config.ts +44 -0
  55. data/config/routes.rb +7 -0
  56. data/debugbar.gemspec +38 -0
  57. data/fixtures/requests/1706607114--demo_post_list.json +499 -0
  58. data/fixtures/requests/1706607120--api_jobs.json +176 -0
  59. data/fixtures/requests/1706607123--api_jobs.json +119 -0
  60. data/fixtures/requests/1706607133--demo_slow_page.json +130 -0
  61. data/fixtures/requests/1706607136--demo_post.json +164 -0
  62. data/fixtures/requests/1706607136--demo_random_post.json +106 -0
  63. data/fixtures/requests/1706607141--api_errors.json +73 -0
  64. data/lib/debugbar/buffers/memory_buffer.rb +34 -0
  65. data/lib/debugbar/buffers/null_buffer.rb +18 -0
  66. data/lib/debugbar/buffers/request_buffer.rb +31 -0
  67. data/lib/debugbar/config.rb +50 -0
  68. data/lib/debugbar/current.rb +18 -0
  69. data/lib/debugbar/engine.rb +96 -5
  70. data/lib/debugbar/loggers/simple_logger.rb +34 -0
  71. data/lib/debugbar/middlewares/track_current_request.rb +35 -0
  72. data/lib/debugbar/request.rb +98 -0
  73. data/lib/debugbar/subscribers/action_controller.rb +33 -0
  74. data/lib/debugbar/subscribers/active_job.rb +158 -0
  75. data/lib/debugbar/subscribers/active_record.rb +65 -0
  76. data/lib/debugbar/subscribers/active_support.rb +30 -0
  77. data/lib/debugbar/version.rb +5 -0
  78. data/lib/debugbar.rb +86 -5
  79. data/package-lock.json +50 -0
  80. data/package.json +5 -0
  81. data/sig/debugbar.rbs +4 -0
  82. metadata +143 -47
  83. data/README.textile +0 -18
  84. data/lib/debugbar/railties/tasks.rake +0 -1
@@ -0,0 +1,499 @@
1
+ {
2
+ "id": "39a6ada7-cbed-4b3d-9c60-d6f9c73690c3",
3
+ "meta": {
4
+ "controller": "DemoController",
5
+ "action": "post_list",
6
+ "params": {
7
+ "controller": "demo",
8
+ "action": "post_list"
9
+ },
10
+ "format": "html",
11
+ "method": "GET",
12
+ "path": "/post-list",
13
+ "status": 200,
14
+ "view_runtime": 54.35400013811886,
15
+ "db_runtime": 79.56599979661405,
16
+ "duration": 806.7089998722076,
17
+ "cpu_time": 680.108166,
18
+ "idle_time": 126.60083387220766,
19
+ "allocations": 1112174
20
+ },
21
+ "request": {
22
+ "method": "GET",
23
+ "path": "/post-list",
24
+ "format": "html",
25
+ "params": {
26
+ "controller": "demo",
27
+ "action": "post_list"
28
+ },
29
+ "headers": {
30
+ "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7",
31
+ "Accept-Encoding": "gzip, deflate, br",
32
+ "Accept-Language": "fr,en;q=0.9",
33
+ "Cache-Control": "max-age=0",
34
+ "Connection": "keep-alive",
35
+ "Cookie": "_demo_app_session=wS9tYOKsZuSV8f%2Fc%2BV2zjz0K1aOIsF5L0DrgipxT5ZXt80E0AOwTPb%2FiuasTg2hcCGgQvga1tmL062eGW3S3ybJExDDzp9If8NWY8atX0jR6KO8baoiA6s9yAsNNRnlsHiMK%2BwE0HnF8%2Fze%2FgGWLnEqpaLKYDfonzabYAj%2FZ9%2BrzmzPMT1w3IVJwKuk4QfO9rq3NgnjIaXaxa6Z2pEL1zQ%2F2HjR8Zs5DAvtISPBWeYXxOUiZHAnFci%2Fv1s2F0p%2FbJc%2FnVb%2BPubCNJdvzJF5IQfnhoHzeqJTiqQ%3D%3D--bYeSu9LGbDlnlZqi--r%2FD6A9ReHNaJcTscmgQDzA%3D%3D",
36
+ "Dnt": "1",
37
+ "Host": "127.0.0.1:3000",
38
+ "If-None-Match": "W/\"ec7b3a0dfa837dbb2aaafb6b7d545772\"",
39
+ "Sec-Ch-Ua": "\"Not_A Brand\";v=\"8\", \"Chromium\";v=\"120\", \"Google Chrome\";v=\"120\"",
40
+ "Sec-Ch-Ua-Mobile": "?0",
41
+ "Sec-Ch-Ua-Platform": "\"macOS\"",
42
+ "Sec-Fetch-Dest": "document",
43
+ "Sec-Fetch-Mode": "navigate",
44
+ "Sec-Fetch-Site": "none",
45
+ "Sec-Fetch-User": "?1",
46
+ "Upgrade-Insecure-Requests": "1",
47
+ "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36",
48
+ "Version": "HTTP/1.1"
49
+ }
50
+ },
51
+ "response": {
52
+ "status": 200,
53
+ "headers": {
54
+ "X-Frame-Options": "SAMEORIGIN",
55
+ "X-Xss-Protection": "0",
56
+ "X-Content-Type-Options": "nosniff",
57
+ "X-Permitted-Cross-Domain-Policies": "none",
58
+ "Referrer-Policy": "strict-origin-when-cross-origin",
59
+ "Link": "</assets/application-f8c090dd3cd5575b45894e4b6478d0b328f7a89e69c744e74f1153c5eca55e4e.css>; rel=preload; as=style; nopush,</assets/es-module-shims.min-4ca9b3dd5e434131e3bb4b0c1d7dff3bfd4035672a5086deec6f73979a49be73.js>; rel=preload; as=script; nopush",
60
+ "Content-Type": "text/html; charset=utf-8",
61
+ "Etag": "W/\"d0d15adb51161affa8db8290c6f6ef56\"",
62
+ "Cache-Control": "max-age=0, private, must-revalidate"
63
+ },
64
+ "body": "<!DOCTYPE html>\n<html>\n <head>\n <title>DemoApp</title>\n <meta name=\"viewport\" content=\"width=device-width,initial-scale=1\">\n <meta name=\"csrf-param\" content=\"authenticity_token\" />\n<meta name=\"csrf-token\" content=\"6mo3kmvs1JiclB8Yv-UxECB4VS48-yCtHVOuTqQgzy0sIid08O4wwv35FzyYBhOdyh6JFiA9hHXK8kU9Kk6dyg\" />\n \n\n\n <link rel=\"stylesheet\" href=\"/assets/application-f8c090dd3cd5575b45894e4b6478d0b328f7a89e69c744e74f1153c5eca55e4e.css\" data-turbo-track=\"reload\" />\n <script type=\"importmap\" data-turbo-track=\"reload\">{\n \"imports\": {\n \"application\": \"/assets/application-f3e871e7be89ccb0adccd09d1fb0f2c5f0583d0626142906e3b227e5641284be.js\",\n \"@hotwired/turbo-rails\": \"/assets/turbo.min-dfd93b3092d1d0ff56557294538d069bdbb28977d3987cb39bc0dd892f32fc57.js\",\n \"@hotwired/stimulus\": \"/assets/stimulus.min-dd364f16ec9504dfb72672295637a1c8838773b01c0b441bd41008124c407894.js\",\n \"@hotwired/stimulus-loading\": \"/assets/stimulus-loading-3576ce92b149ad5d6959438c6f291e2426c86df3b874c525b30faad51b0d96b3.js\",\n \"controllers/application\": \"/assets/controllers/application-368d98631bccbf2349e0d4f8269afb3fe9625118341966de054759d96ea86c7e.js\",\n \"controllers/hello_controller\": \"/assets/controllers/hello_controller-549135e8e7c683a538c3d6d517339ba470fcfb79d62f738a0a089ba41851a554.js\",\n \"controllers\": \"/assets/controllers/index-2db729dddcc5b979110e98de4b6720f83f91a123172e87281d5a58410fc43806.js\"\n }\n}</script>\n<link rel=\"modulepreload\" href=\"/assets/application-f3e871e7be89ccb0adccd09d1fb0f2c5f0583d0626142906e3b227e5641284be.js\">\n<link rel=\"modulepreload\" href=\"/assets/turbo.min-dfd93b3092d1d0ff56557294538d069bdbb28977d3987cb39bc0dd892f32fc57.js\">\n<link rel=\"modulepreload\" href=\"/assets/stimulus.min-dd364f16ec9504dfb72672295637a1c8838773b01c0b441bd41008124c407894.js\">\n<link rel=\"modulepreload\" href=\"/assets/stimulus-loading-3576ce92b149ad5d6959438c6f291e2426c86df3b874c525b30faad51b0d96b3.js\">\n<script src=\"/assets/es-module-shims.min-4ca9b3dd5e434131e3bb4b0c1d7dff3bfd4035672a5086deec6f73979a49be73.js\" async=\"async\" data-turbo-track=\"reload\"></script>\n<script type=\"module\">import \"application\"</script>\n\n </head>\n\n <body>\n <div class=\"container mb-5\">\n\n\n <nav class=\"mt-2 mb-4 navbar navbar-expand-lg navbar-light bg-light\">\n <div class=\"container-fluid\">\n <a class=\"navbar-brand\" href=\"#\">Rails Demo app</a>\n <button class=\"navbar-toggler\" type=\"button\" data-bs-toggle=\"collapse\" data-bs-target=\"#navbarText\" aria-controls=\"navbarText\" aria-expanded=\"false\" aria-label=\"Toggle navigation\">\n <span class=\"navbar-toggler-icon\"></span>\n </button>\n <div class=\"collapse navbar-collapse\" id=\"navbarText\">\n <ul class=\"navbar-nav me-auto mb-2 mb-lg-0\">\n <li class=\"nav-item\">\n <a class=\"nav-link\" aria-current=\"page\" href=\"/post-list\">Post List</a>\n </li>\n <li class=\"nav-item\">\n <a class=\"nav-link\" aria-current=\"page\" href=\"/random\">Random</a>\n </li>\n <li class=\"nav-item\">\n <a class=\"nav-link\" aria-current=\"page\" href=\"/slow-page\">Slow page</a>\n </li>\n </ul>\n <ul class=\"navbar-nav\">\n <li class=\"nav-item\">\n <button type=\"button\" class=\"nav-link\" onclick=\"fetch('/api/errors?code=404'); fetch('/api/errors?code=401'); fetch('/api/errors?code=500')\">Errors</button>\n </li>\n </ul>\n </div>\n </div>\n </nav>\n\n <div class=\"mb-5\">\n <table class=\"table table-hover table-striped\">\n <thead>\n <tr class=\"table-secondary\">\n <th scope=\"col\">#</th>\n <th scope=\"col\">Title</th>\n <th scope=\"col\">Published on</th>\n <th scope=\"col\">Reactions</th>\n <th scope=\"col\">Actions</th>\n </tr>\n </thead>\n <tbody>\n\n <tr>\n <th scope=\"row\">4604</th>\n <td>\n <a href=\"http://127.0.0.1:3000/post/4604\">\n <strong>A Passage to India</strong>\n </a>\n <br> by Gene Willms\n and 10 others\n </td>\n <td>2023-10-06</td>\n <td>414</td>\n <td>\n <button class=\"btn btn-sm btn-outline-secondary\" onclick=\"fetch('/api/jobs?name=send_email&post_id=4604')\">Send email</button>\n <button class=\"btn btn-sm btn-outline-primary\" onclick=\"fetch('/api/jobs?name=refresh&post_id=4604')\">Refresh</button>\n </td>\n </tr>\n <tr>\n <th scope=\"row\">1176</th>\n <td>\n <a href=\"http://127.0.0.1:3000/post/1176\">\n <strong>A Confederacy of Dunces</strong>\n </a>\n <br> by Williams Ruecker\n and 1 others\n </td>\n <td>2023-01-24</td>\n <td>464</td>\n <td>\n <button class=\"btn btn-sm btn-outline-secondary\" onclick=\"fetch('/api/jobs?name=send_email&post_id=1176')\">Send email</button>\n <button class=\"btn btn-sm btn-outline-primary\" onclick=\"fetch('/api/jobs?name=refresh&post_id=1176')\">Refresh</button>\n </td>\n </tr>\n <tr>\n <th scope=\"row\">702</th>\n <td>\n <a href=\"http://127.0.0.1:3000/post/702\">\n <strong>To Say Nothing of the Dog</strong>\n </a>\n <br> by Chin Larson\n and 6 others\n </td>\n <td>2022-09-27</td>\n <td>774</td>\n <td>\n <button class=\"btn btn-sm btn-outline-secondary\" onclick=\"fetch('/api/jobs?name=send_email&post_id=702')\">Send email</button>\n <button class=\"btn btn-sm btn-outline-primary\" onclick=\"fetch('/api/jobs?name=refresh&post_id=702')\">Refresh</button>\n </td>\n </tr>\n <tr>\n <th scope=\"row\">1218</th>\n <td>\n <a href=\"http://127.0.0.1:3000/post/1218\">\n <strong>Fame Is the Spur</strong>\n </a>\n <br> by Krystin Lockman\n and 9 others\n </td>\n <td>2022-09-11</td>\n <td>128</td>\n <td>\n <button class=\"btn btn-sm btn-outline-secondary\" onclick=\"fetch('/api/jobs?name=send_email&post_id=1218')\">Send email</button>\n <button class=\"btn btn-sm btn-outline-primary\" onclick=\"fetch('/api/jobs?name=refresh&post_id=1218')\">Refresh</button>\n </td>\n </tr>\n <tr>\n <th scope=\"row\">4902</th>\n <td>\n <a href=\"http://127.0.0.1:3000/post/4902\">\n <strong>To a God Unknown</strong>\n </a>\n <br> by Orlando Roob\n and 2 others\n </td>\n <td>2021-05-17</td>\n <td>983</td>\n <td>\n <button class=\"btn btn-sm btn-outline-secondary\" onclick=\"fetch('/api/jobs?name=send_email&post_id=4902')\">Send email</button>\n <button class=\"btn btn-sm btn-outline-primary\" onclick=\"fetch('/api/jobs?name=refresh&post_id=4902')\">Refresh</button>\n </td>\n </tr>\n <tr>\n <th scope=\"row\">3720</th>\n <td>\n <a href=\"http://127.0.0.1:3000/post/3720\">\n <strong>The Daffodil Sky</strong>\n </a>\n <br> by Wilfred Parisian\n and 9 others\n </td>\n <td>2023-05-19</td>\n <td>543</td>\n <td>\n <button class=\"btn btn-sm btn-outline-secondary\" onclick=\"fetch('/api/jobs?name=send_email&post_id=3720')\">Send email</button>\n <button class=\"btn btn-sm btn-outline-primary\" onclick=\"fetch('/api/jobs?name=refresh&post_id=3720')\">Refresh</button>\n </td>\n </tr>\n <tr>\n <th scope=\"row\">2653</th>\n <td>\n <a href=\"http://127.0.0.1:3000/post/2653\">\n <strong>Let Us Now Praise Famous Men</strong>\n </a>\n <br> by Sudie Gutkowski\n and 9 others\n </td>\n <td>2021-07-06</td>\n <td>196</td>\n <td>\n <button class=\"btn btn-sm btn-outline-secondary\" onclick=\"fetch('/api/jobs?name=send_email&post_id=2653')\">Send email</button>\n <button class=\"btn btn-sm btn-outline-primary\" onclick=\"fetch('/api/jobs?name=refresh&post_id=2653')\">Refresh</button>\n </td>\n </tr>\n <tr>\n <th scope=\"row\">2913</th>\n <td>\n <a href=\"http://127.0.0.1:3000/post/2913\">\n <strong>Those Barren Leaves, Thrones, Dominations</strong>\n </a>\n <br> by Alma Cummings I\n and 2 others\n </td>\n <td>2021-11-05</td>\n <td>484</td>\n <td>\n <button class=\"btn btn-sm btn-outline-secondary\" onclick=\"fetch('/api/jobs?name=send_email&post_id=2913')\">Send email</button>\n <button class=\"btn btn-sm btn-outline-primary\" onclick=\"fetch('/api/jobs?name=refresh&post_id=2913')\">Refresh</button>\n </td>\n </tr>\n <tr>\n <th scope=\"row\">4129</th>\n <td>\n <a href=\"http://127.0.0.1:3000/post/4129\">\n <strong>Moab Is My Washpot</strong>\n </a>\n <br> by Francisco Schumm\n and 6 others\n </td>\n <td>2021-11-14</td>\n <td>928</td>\n <td>\n <button class=\"btn btn-sm btn-outline-secondary\" onclick=\"fetch('/api/jobs?name=send_email&post_id=4129')\">Send email</button>\n <button class=\"btn btn-sm btn-outline-primary\" onclick=\"fetch('/api/jobs?name=refresh&post_id=4129')\">Refresh</button>\n </td>\n </tr>\n <tr>\n <th scope=\"row\">2789</th>\n <td>\n <a href=\"http://127.0.0.1:3000/post/2789\">\n <strong>The Proper Study</strong>\n </a>\n <br> by Amie Goldner\n and 4 others\n </td>\n <td>2021-07-30</td>\n <td>188</td>\n <td>\n <button class=\"btn btn-sm btn-outline-secondary\" onclick=\"fetch('/api/jobs?name=send_email&post_id=2789')\">Send email</button>\n <button class=\"btn btn-sm btn-outline-primary\" onclick=\"fetch('/api/jobs?name=refresh&post_id=2789')\">Refresh</button>\n </td>\n </tr>\n <tr>\n <th scope=\"row\">743</th>\n <td>\n <a href=\"http://127.0.0.1:3000/post/743\">\n <strong>For Whom the Bell Tolls</strong>\n </a>\n <br> by Soila Schaefer Ret.\n and 1 others\n </td>\n <td>2021-05-05</td>\n <td>116</td>\n <td>\n <button class=\"btn btn-sm btn-outline-secondary\" onclick=\"fetch('/api/jobs?name=send_email&post_id=743')\">Send email</button>\n <button class=\"btn btn-sm btn-outline-primary\" onclick=\"fetch('/api/jobs?name=refresh&post_id=743')\">Refresh</button>\n </td>\n </tr>\n <tr>\n <th scope=\"row\">1816</th>\n <td>\n <a href=\"http://127.0.0.1:3000/post/1816\">\n <strong>The Moon by Night</strong>\n </a>\n <br> by Deadra Bogisich\n and 3 others\n </td>\n <td>2021-02-28</td>\n <td>48</td>\n <td>\n <button class=\"btn btn-sm btn-outline-secondary\" onclick=\"fetch('/api/jobs?name=send_email&post_id=1816')\">Send email</button>\n <button class=\"btn btn-sm btn-outline-primary\" onclick=\"fetch('/api/jobs?name=refresh&post_id=1816')\">Refresh</button>\n </td>\n </tr>\n <tr>\n <th scope=\"row\">782</th>\n <td>\n <a href=\"http://127.0.0.1:3000/post/782\">\n <strong>Precious Bane</strong>\n </a>\n <br> by Ariel Adams\n and 10 others\n </td>\n <td>2023-06-16</td>\n <td>560</td>\n <td>\n <button class=\"btn btn-sm btn-outline-secondary\" onclick=\"fetch('/api/jobs?name=send_email&post_id=782')\">Send email</button>\n <button class=\"btn btn-sm btn-outline-primary\" onclick=\"fetch('/api/jobs?name=refresh&post_id=782')\">Refresh</button>\n </td>\n </tr>\n <tr>\n <th scope=\"row\">2099</th>\n <td>\n <a href=\"http://127.0.0.1:3000/post/2099\">\n <strong>Frequent Hearses</strong>\n </a>\n <br> by Wade Rodriguez\n and 10 others\n </td>\n <td>2022-09-02</td>\n <td>552</td>\n <td>\n <button class=\"btn btn-sm btn-outline-secondary\" onclick=\"fetch('/api/jobs?name=send_email&post_id=2099')\">Send email</button>\n <button class=\"btn btn-sm btn-outline-primary\" onclick=\"fetch('/api/jobs?name=refresh&post_id=2099')\">Refresh</button>\n </td>\n </tr>\n <tr>\n <th scope=\"row\">3458</th>\n <td>\n <a href=\"http://127.0.0.1:3000/post/3458\">\n <strong>O Pioneers!</strong>\n </a>\n <br> by Mr. Queenie Lind\n and 3 others\n </td>\n <td>2021-12-19</td>\n <td>413</td>\n <td>\n <button class=\"btn btn-sm btn-outline-secondary\" onclick=\"fetch('/api/jobs?name=send_email&post_id=3458')\">Send email</button>\n <button class=\"btn btn-sm btn-outline-primary\" onclick=\"fetch('/api/jobs?name=refresh&post_id=3458')\">Refresh</button>\n </td>\n </tr>\n <tr>\n <th scope=\"row\">2616</th>\n <td>\n <a href=\"http://127.0.0.1:3000/post/2616\">\n <strong>Behold the Man</strong>\n </a>\n <br> by Pres. Brain Koelpin\n and 8 others\n </td>\n <td>2022-10-06</td>\n <td>262</td>\n <td>\n <button class=\"btn btn-sm btn-outline-secondary\" onclick=\"fetch('/api/jobs?name=send_email&post_id=2616')\">Send email</button>\n <button class=\"btn btn-sm btn-outline-primary\" onclick=\"fetch('/api/jobs?name=refresh&post_id=2616')\">Refresh</button>\n </td>\n </tr>\n\n </tbody>\n</table>\n\nShowing 16 posts out of 5000 in total.\n\n </div>\n\n </div>\n\n <div id=\"__debugbar\"></div>\n <script type=\"text/javascript\">\n window._debugbarConfigOptions = {}\n </script>\n <script defer src=\"/_debugbar/assets/script\"></script>\n <script type=\"module\">\n import sheet from '/_debugbar/assets/style' assert { type: 'css' }\n const debugbar = document.getElementById('__debugbar-shadow-root')\n debugbar.shadowRoot.adoptedStyleSheets = [sheet];\n </script>\n\n </body>\n</html>\n"
65
+ },
66
+ "models": {
67
+ "Post": 16,
68
+ "PostAuthor": 109,
69
+ "Author": 109
70
+ },
71
+ "queries": [
72
+ {
73
+ "id": "a49beead96b5a5e5ec7b",
74
+ "title": "ActiveRecord::SchemaMigration Load (1.4ms)",
75
+ "name": "ActiveRecord::SchemaMigration Load",
76
+ "sql": "SELECT `schema_migrations`.`version` FROM `schema_migrations` ORDER BY `schema_migrations`.`version` ASC ",
77
+ "cached": false,
78
+ "async": false,
79
+ "duration": 1.4,
80
+ "lock_wait": null,
81
+ "binds": null,
82
+ "source": [
83
+ "/Users/julien.bourdeau/Personal/debugbar/debugbar/lib/debugbar/middlewares/track_current_request.rb:17",
84
+ " `call'"
85
+ ]
86
+ },
87
+ {
88
+ "id": "a49beead96b5a5e5ec7b",
89
+ "title": "Post Load (26.2ms)",
90
+ "name": "Post Load",
91
+ "sql": "SELECT `posts`.* FROM `posts` ORDER BY RAND() LIMIT 16 ",
92
+ "cached": false,
93
+ "async": false,
94
+ "duration": 26.2,
95
+ "lock_wait": null,
96
+ "binds": null,
97
+ "source": [
98
+ "/Users/julien.bourdeau/Personal/rails/demo_app/app/controllers/demo_controller.rb:4",
99
+ " `post_list'"
100
+ ]
101
+ },
102
+ {
103
+ "id": "a49beead96b5a5e5ec7b",
104
+ "title": "PostAuthor Load (12.1ms)",
105
+ "name": "PostAuthor Load",
106
+ "sql": "SELECT `post_authors`.* FROM `post_authors` WHERE `post_authors`.`post_id` IN (4604, 1176, 702, 1218, 4902, 3720, 2653, 2913, 4129, 2789, 743, 1816, 782, 2099, 3458, 2616) ",
107
+ "cached": false,
108
+ "async": false,
109
+ "duration": 12.1,
110
+ "lock_wait": null,
111
+ "binds": null,
112
+ "source": [
113
+ "/Users/julien.bourdeau/Personal/rails/demo_app/app/controllers/demo_controller.rb:4",
114
+ " `post_list'"
115
+ ]
116
+ },
117
+ {
118
+ "id": "a49beead96b5a5e5ec7b",
119
+ "title": "Author Load (1.5ms)",
120
+ "name": "Author Load",
121
+ "sql": "SELECT `authors`.* FROM `authors` WHERE `authors`.`id` IN (336, 1802, 1881, 1286, 1818, 856, 1949, 83, 526, 660, 531, 1676, 680, 428, 831, 1502, 245, 1657, 1381, 1019, 1992, 348, 75, 932, 1307, 1961, 1890, 851, 70, 1720, 288, 1231, 539, 1635, 1842, 1620, 1116, 1251, 27, 1003, 1086, 1470, 1708, 786, 1037, 1246, 1805, 258, 234, 1742, 663, 137, 306, 1813, 125, 623, 435, 292, 277, 166, 1001, 828, 2, 1196, 1238, 342, 1936, 364, 1089, 508, 1434, 887, 1738, 1779, 739, 970, 1639, 1972, 1520, 1874, 803, 1204, 1966, 1735, 898, 1902, 1786, 1745, 65, 290, 1062, 614, 1887, 1792, 678, 347, 1717, 1728, 262, 154, 1219, 1636, 1660, 722, 1035, 914, 426, 1628, 240) ",
122
+ "cached": false,
123
+ "async": false,
124
+ "duration": 1.5,
125
+ "lock_wait": null,
126
+ "binds": null,
127
+ "source": [
128
+ "/Users/julien.bourdeau/Personal/rails/demo_app/app/controllers/demo_controller.rb:4",
129
+ " `post_list'"
130
+ ]
131
+ },
132
+ {
133
+ "id": "a49beead96b5a5e5ec7b",
134
+ "title": "Post Count (2.3ms)",
135
+ "name": "Post Count",
136
+ "sql": "SELECT COUNT(*) FROM `posts` ",
137
+ "cached": false,
138
+ "async": false,
139
+ "duration": 2.3,
140
+ "lock_wait": null,
141
+ "binds": null,
142
+ "source": [
143
+ "/Users/julien.bourdeau/Personal/rails/demo_app/app/controllers/demo_controller.rb:6",
144
+ " `block in post_list'"
145
+ ]
146
+ },
147
+ {
148
+ "id": "a49beead96b5a5e5ec7b",
149
+ "title": "Reaction Count (3.4ms)",
150
+ "name": "Reaction Count",
151
+ "sql": "SELECT COUNT(*) FROM `reactions` WHERE `reactions`.`post_id` = 4604 ",
152
+ "cached": false,
153
+ "async": false,
154
+ "duration": 3.4,
155
+ "lock_wait": null,
156
+ "binds": null,
157
+ "source": [
158
+ "/Users/julien.bourdeau/Personal/rails/demo_app/app/views/demo/post_list.html.erb:24",
159
+ " `block in _app_views_demo_post_list_html_erb__275934075726817425_27660'"
160
+ ]
161
+ },
162
+ {
163
+ "id": "a49beead96b5a5e5ec7b",
164
+ "title": "Reaction Count (1.4ms)",
165
+ "name": "Reaction Count",
166
+ "sql": "SELECT COUNT(*) FROM `reactions` WHERE `reactions`.`post_id` = 1176 ",
167
+ "cached": false,
168
+ "async": false,
169
+ "duration": 1.4,
170
+ "lock_wait": null,
171
+ "binds": null,
172
+ "source": [
173
+ "/Users/julien.bourdeau/Personal/rails/demo_app/app/views/demo/post_list.html.erb:24",
174
+ " `block in _app_views_demo_post_list_html_erb__275934075726817425_27660'"
175
+ ]
176
+ },
177
+ {
178
+ "id": "a49beead96b5a5e5ec7b",
179
+ "title": "Reaction Count (1.2ms)",
180
+ "name": "Reaction Count",
181
+ "sql": "SELECT COUNT(*) FROM `reactions` WHERE `reactions`.`post_id` = 702 ",
182
+ "cached": false,
183
+ "async": false,
184
+ "duration": 1.2,
185
+ "lock_wait": null,
186
+ "binds": null,
187
+ "source": [
188
+ "/Users/julien.bourdeau/Personal/rails/demo_app/app/views/demo/post_list.html.erb:24",
189
+ " `block in _app_views_demo_post_list_html_erb__275934075726817425_27660'"
190
+ ]
191
+ },
192
+ {
193
+ "id": "a49beead96b5a5e5ec7b",
194
+ "title": "Reaction Count (0.8ms)",
195
+ "name": "Reaction Count",
196
+ "sql": "SELECT COUNT(*) FROM `reactions` WHERE `reactions`.`post_id` = 1218 ",
197
+ "cached": false,
198
+ "async": false,
199
+ "duration": 0.8,
200
+ "lock_wait": null,
201
+ "binds": null,
202
+ "source": [
203
+ "/Users/julien.bourdeau/Personal/rails/demo_app/app/views/demo/post_list.html.erb:24",
204
+ " `block in _app_views_demo_post_list_html_erb__275934075726817425_27660'"
205
+ ]
206
+ },
207
+ {
208
+ "id": "a49beead96b5a5e5ec7b",
209
+ "title": "Reaction Count (1.0ms)",
210
+ "name": "Reaction Count",
211
+ "sql": "SELECT COUNT(*) FROM `reactions` WHERE `reactions`.`post_id` = 4902 ",
212
+ "cached": false,
213
+ "async": false,
214
+ "duration": 1.0,
215
+ "lock_wait": null,
216
+ "binds": null,
217
+ "source": [
218
+ "/Users/julien.bourdeau/Personal/rails/demo_app/app/views/demo/post_list.html.erb:24",
219
+ " `block in _app_views_demo_post_list_html_erb__275934075726817425_27660'"
220
+ ]
221
+ },
222
+ {
223
+ "id": "a49beead96b5a5e5ec7b",
224
+ "title": "Reaction Count (1.0ms)",
225
+ "name": "Reaction Count",
226
+ "sql": "SELECT COUNT(*) FROM `reactions` WHERE `reactions`.`post_id` = 3720 ",
227
+ "cached": false,
228
+ "async": false,
229
+ "duration": 1.0,
230
+ "lock_wait": null,
231
+ "binds": null,
232
+ "source": [
233
+ "/Users/julien.bourdeau/Personal/rails/demo_app/app/views/demo/post_list.html.erb:24",
234
+ " `block in _app_views_demo_post_list_html_erb__275934075726817425_27660'"
235
+ ]
236
+ },
237
+ {
238
+ "id": "a49beead96b5a5e5ec7b",
239
+ "title": "Reaction Count (0.8ms)",
240
+ "name": "Reaction Count",
241
+ "sql": "SELECT COUNT(*) FROM `reactions` WHERE `reactions`.`post_id` = 2653 ",
242
+ "cached": false,
243
+ "async": false,
244
+ "duration": 0.8,
245
+ "lock_wait": null,
246
+ "binds": null,
247
+ "source": [
248
+ "/Users/julien.bourdeau/Personal/rails/demo_app/app/views/demo/post_list.html.erb:24",
249
+ " `block in _app_views_demo_post_list_html_erb__275934075726817425_27660'"
250
+ ]
251
+ },
252
+ {
253
+ "id": "a49beead96b5a5e5ec7b",
254
+ "title": "Reaction Count (0.7ms)",
255
+ "name": "Reaction Count",
256
+ "sql": "SELECT COUNT(*) FROM `reactions` WHERE `reactions`.`post_id` = 2913 ",
257
+ "cached": false,
258
+ "async": false,
259
+ "duration": 0.7,
260
+ "lock_wait": null,
261
+ "binds": null,
262
+ "source": [
263
+ "/Users/julien.bourdeau/Personal/rails/demo_app/app/views/demo/post_list.html.erb:24",
264
+ " `block in _app_views_demo_post_list_html_erb__275934075726817425_27660'"
265
+ ]
266
+ },
267
+ {
268
+ "id": "a49beead96b5a5e5ec7b",
269
+ "title": "Reaction Count (1.0ms)",
270
+ "name": "Reaction Count",
271
+ "sql": "SELECT COUNT(*) FROM `reactions` WHERE `reactions`.`post_id` = 4129 ",
272
+ "cached": false,
273
+ "async": false,
274
+ "duration": 1.0,
275
+ "lock_wait": null,
276
+ "binds": null,
277
+ "source": [
278
+ "/Users/julien.bourdeau/Personal/rails/demo_app/app/views/demo/post_list.html.erb:24",
279
+ " `block in _app_views_demo_post_list_html_erb__275934075726817425_27660'"
280
+ ]
281
+ },
282
+ {
283
+ "id": "a49beead96b5a5e5ec7b",
284
+ "title": "Reaction Count (0.4ms)",
285
+ "name": "Reaction Count",
286
+ "sql": "SELECT COUNT(*) FROM `reactions` WHERE `reactions`.`post_id` = 2789 ",
287
+ "cached": false,
288
+ "async": false,
289
+ "duration": 0.4,
290
+ "lock_wait": null,
291
+ "binds": null,
292
+ "source": [
293
+ "/Users/julien.bourdeau/Personal/rails/demo_app/app/views/demo/post_list.html.erb:24",
294
+ " `block in _app_views_demo_post_list_html_erb__275934075726817425_27660'"
295
+ ]
296
+ },
297
+ {
298
+ "id": "a49beead96b5a5e5ec7b",
299
+ "title": "Reaction Count (0.4ms)",
300
+ "name": "Reaction Count",
301
+ "sql": "SELECT COUNT(*) FROM `reactions` WHERE `reactions`.`post_id` = 743 ",
302
+ "cached": false,
303
+ "async": false,
304
+ "duration": 0.4,
305
+ "lock_wait": null,
306
+ "binds": null,
307
+ "source": [
308
+ "/Users/julien.bourdeau/Personal/rails/demo_app/app/views/demo/post_list.html.erb:24",
309
+ " `block in _app_views_demo_post_list_html_erb__275934075726817425_27660'"
310
+ ]
311
+ },
312
+ {
313
+ "id": "a49beead96b5a5e5ec7b",
314
+ "title": "Reaction Count (0.1ms)",
315
+ "name": "Reaction Count",
316
+ "sql": "SELECT COUNT(*) FROM `reactions` WHERE `reactions`.`post_id` = 1816 ",
317
+ "cached": false,
318
+ "async": false,
319
+ "duration": 0.1,
320
+ "lock_wait": null,
321
+ "binds": null,
322
+ "source": [
323
+ "/Users/julien.bourdeau/Personal/rails/demo_app/app/views/demo/post_list.html.erb:24",
324
+ " `block in _app_views_demo_post_list_html_erb__275934075726817425_27660'"
325
+ ]
326
+ },
327
+ {
328
+ "id": "a49beead96b5a5e5ec7b",
329
+ "title": "Reaction Count (0.2ms)",
330
+ "name": "Reaction Count",
331
+ "sql": "SELECT COUNT(*) FROM `reactions` WHERE `reactions`.`post_id` = 782 ",
332
+ "cached": false,
333
+ "async": false,
334
+ "duration": 0.2,
335
+ "lock_wait": null,
336
+ "binds": null,
337
+ "source": [
338
+ "/Users/julien.bourdeau/Personal/rails/demo_app/app/views/demo/post_list.html.erb:24",
339
+ " `block in _app_views_demo_post_list_html_erb__275934075726817425_27660'"
340
+ ]
341
+ },
342
+ {
343
+ "id": "a49beead96b5a5e5ec7b",
344
+ "title": "Reaction Count (0.5ms)",
345
+ "name": "Reaction Count",
346
+ "sql": "SELECT COUNT(*) FROM `reactions` WHERE `reactions`.`post_id` = 2099 ",
347
+ "cached": false,
348
+ "async": false,
349
+ "duration": 0.5,
350
+ "lock_wait": null,
351
+ "binds": null,
352
+ "source": [
353
+ "/Users/julien.bourdeau/Personal/rails/demo_app/app/views/demo/post_list.html.erb:24",
354
+ " `block in _app_views_demo_post_list_html_erb__275934075726817425_27660'"
355
+ ]
356
+ },
357
+ {
358
+ "id": "a49beead96b5a5e5ec7b",
359
+ "title": "Reaction Count (0.6ms)",
360
+ "name": "Reaction Count",
361
+ "sql": "SELECT COUNT(*) FROM `reactions` WHERE `reactions`.`post_id` = 3458 ",
362
+ "cached": false,
363
+ "async": false,
364
+ "duration": 0.6,
365
+ "lock_wait": null,
366
+ "binds": null,
367
+ "source": [
368
+ "/Users/julien.bourdeau/Personal/rails/demo_app/app/views/demo/post_list.html.erb:24",
369
+ " `block in _app_views_demo_post_list_html_erb__275934075726817425_27660'"
370
+ ]
371
+ },
372
+ {
373
+ "id": "a49beead96b5a5e5ec7b",
374
+ "title": "Reaction Count (0.7ms)",
375
+ "name": "Reaction Count",
376
+ "sql": "SELECT COUNT(*) FROM `reactions` WHERE `reactions`.`post_id` = 2616 ",
377
+ "cached": false,
378
+ "async": false,
379
+ "duration": 0.7,
380
+ "lock_wait": null,
381
+ "binds": null,
382
+ "source": [
383
+ "/Users/julien.bourdeau/Personal/rails/demo_app/app/views/demo/post_list.html.erb:24",
384
+ " `block in _app_views_demo_post_list_html_erb__275934075726817425_27660'"
385
+ ]
386
+ }
387
+ ],
388
+ "jobs": [
389
+ {
390
+ "id": "06202393-32ae-4360-bf51-504f88605e03",
391
+ "class": "WarmupCacheJob",
392
+ "queue": "Inline(default)",
393
+ "args": [
394
+ 4604
395
+ ],
396
+ "successfully_enqueued": true,
397
+ "scheduled_at": null,
398
+ "logs": [
399
+ "Enqueued WarmupCacheJob (Job ID: 06202393-32ae-4360-bf51-504f88605e03) to Inline(default) with arguments: 4604",
400
+ "/Users/julien.bourdeau/Personal/debugbar/debugbar/lib/debugbar/subscribers/active_job.rb:22:in `enqueue'"
401
+ ]
402
+ },
403
+ {
404
+ "id": "dbf2aa1e-280a-4899-8a50-610798944acb",
405
+ "class": "WarmupCacheJob",
406
+ "queue": "Inline(default)",
407
+ "args": [
408
+ 1176
409
+ ],
410
+ "successfully_enqueued": true,
411
+ "scheduled_at": null,
412
+ "logs": [
413
+ "Enqueued WarmupCacheJob (Job ID: dbf2aa1e-280a-4899-8a50-610798944acb) to Inline(default) with arguments: 1176",
414
+ "/Users/julien.bourdeau/Personal/debugbar/debugbar/lib/debugbar/subscribers/active_job.rb:22:in `enqueue'"
415
+ ]
416
+ },
417
+ {
418
+ "id": "088324a9-2d77-40f2-b22b-3e37d5c2d427",
419
+ "class": "WarmupCacheJob",
420
+ "queue": "Inline(default)",
421
+ "args": [
422
+ 702
423
+ ],
424
+ "successfully_enqueued": true,
425
+ "scheduled_at": null,
426
+ "logs": [
427
+ "Enqueued WarmupCacheJob (Job ID: 088324a9-2d77-40f2-b22b-3e37d5c2d427) to Inline(default) with arguments: 702",
428
+ "/Users/julien.bourdeau/Personal/debugbar/debugbar/lib/debugbar/subscribers/active_job.rb:22:in `enqueue'"
429
+ ]
430
+ }
431
+ ],
432
+ "messages": [
433
+ {
434
+ "msg": "before_action",
435
+ "extra": [
436
+ {
437
+ "params": {
438
+ "controller": "demo",
439
+ "action": "post_list"
440
+ }
441
+ }
442
+ ]
443
+ },
444
+ {
445
+ "msg": "Entering controller method",
446
+ "extra": [
447
+ {
448
+ "params": {
449
+ "controller": "demo",
450
+ "action": "post_list"
451
+ }
452
+ }
453
+ ]
454
+ },
455
+ {
456
+ "msg": "Rendering navigation",
457
+ "extra": [
458
+
459
+ ]
460
+ }
461
+ ],
462
+ "cache": [
463
+ {
464
+ "key": "nb_total_posts",
465
+ "store": "ActiveSupport::Cache::NullStore",
466
+ "compress": true,
467
+ "compress_threshold": 1024,
468
+ "super_operation": "fetch",
469
+ "hit": false,
470
+ "name": "cache_read.active_support",
471
+ "transaction_id": "a49beead96b5a5e5ec7b",
472
+ "time": "14:56:08.112",
473
+ "label": "read"
474
+ },
475
+ {
476
+ "key": "nb_total_posts",
477
+ "store": "ActiveSupport::Cache::NullStore",
478
+ "compress": true,
479
+ "compress_threshold": 1024,
480
+ "name": "cache_generate.active_support",
481
+ "transaction_id": "a49beead96b5a5e5ec7b",
482
+ "time": "14:56:09.269",
483
+ "label": "generate"
484
+ },
485
+ {
486
+ "key": "nb_total_posts",
487
+ "store": "ActiveSupport::Cache::NullStore",
488
+ "compress": true,
489
+ "compress_threshold": 1024,
490
+ "name": "cache_write.active_support",
491
+ "transaction_id": "a49beead96b5a5e5ec7b",
492
+ "time": "14:56:32.096",
493
+ "label": "write"
494
+ }
495
+ ],
496
+ "logs": [
497
+
498
+ ]
499
+ }