{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":12656803,"defaultBranch":"master","name":"rack-mini-profiler","ownerLogin":"MiniProfiler","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2013-09-06T23:32:44.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/1631473?v=4","public":true,"private":false,"isOrgOwned":true},"refInfo":{"name":"","listCacheKey":"v0:1707950624.0","currentOid":""},"activityList":{"items":[{"before":"263f0d81d18c0ae6ea94b47c4b9aed1f133fa5ee","after":"5e42a57acab20125f910c0f29d82f19e7220ff31","ref":"refs/heads/master","pushedAt":"2024-02-14T22:42:50.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"SamSaffron","name":"Sam","path":"/SamSaffron","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5213?s=80&v=4"},"commit":{"message":"version bump","shortMessageHtmlLink":"version bump"}},{"before":"9081657369f271615dfc2266cf188d231c1e6dae","after":"263f0d81d18c0ae6ea94b47c4b9aed1f133fa5ee","ref":"refs/heads/master","pushedAt":"2024-02-14T22:32:01.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"SamSaffron","name":"Sam","path":"/SamSaffron","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5213?s=80&v=4"},"commit":{"message":"Add flamegraph path to response headers (#601)\n\n* Add flamegraph path to response headers\r\n\r\nThe motivation for this is to enable easy access to the flamegraph\r\nwhen using the async-flamegraph action. Currently, if have a CURL\r\nrequest that you are wanting to profile, you have to add the\r\n`pp=async-flamegraph` query parameter to the request, then copy the\r\nfirst ID from the `X-MiniProfiler-Ids` header, then add that ID to the\r\n`/mini-profiler-resources/flamegraph?id=` path in the browser.\r\nThis assumes that you know that the current request profile id is the\r\nfirst one in the `X-MiniProfiler-Ids` header (personally I was not\r\nconfident of this until I read the source code) and that you know the\r\npath to the flamegraph endpoint.\r\n\r\nI originally added the protocol, host, and port to the path, but I\r\ndidn't know if that was guaranteed to be correct in all cases, so I\r\nremoved it.\r\n\r\n* Add note of X-MiniProfiler-Flamegraph-Path header to README","shortMessageHtmlLink":"Add flamegraph path to response headers (#601)"}},{"before":"68a69b3cbf073e00214f5f05fff5161a944de103","after":"9081657369f271615dfc2266cf188d231c1e6dae","ref":"refs/heads/master","pushedAt":"2024-02-14T22:26:24.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"SamSaffron","name":"Sam","path":"/SamSaffron","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5213?s=80&v=4"},"commit":{"message":"FEATURE: Support dynamic `config.content_security_policy_nonce` (#609)\n\nCSP nonce values change on every request, so accepting a static string as an option doesn't really make sense. This commit allows `config.content_security_policy_nonce` to be set to a Proc which is run for each request, and can return a nonce based on the `env` and current response headers.","shortMessageHtmlLink":"FEATURE: Support dynamic config.content_security_policy_nonce (#609)"}},{"before":"c83223f7ffb72f3731dc561821c01e10d559c494","after":"68a69b3cbf073e00214f5f05fff5161a944de103","ref":"refs/heads/master","pushedAt":"2024-01-02T00:30:51.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"nateberkopec","name":"Nate Berkopec","path":"/nateberkopec","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/845662?s=80&v=4"},"commit":{"message":"Display name in badge (#602)\n\n* Page name includes query string\r\n\r\n* Badge: align columns, display page name\r\n\r\n* Move page_name into its own method\r\n\r\n* Requests also include query string\r\n\r\n* Always display totals control (so URL/name is hidden)\r\n\r\n* Whitespace","shortMessageHtmlLink":"Display name in badge (#602)"}},{"before":"804f2da6ff522bc103c529a79a1a2889a692dbbc","after":"7d16109d139377f0517cfa565b964491b8da8eff","ref":"refs/heads/improved-display","pushedAt":"2024-01-02T00:26:37.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"nateberkopec","name":"Nate Berkopec","path":"/nateberkopec","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/845662?s=80&v=4"},"commit":{"message":"Whitespace","shortMessageHtmlLink":"Whitespace"}},{"before":"bbc8e70257efe3ea00e1bf8b2096b1073e27fb0a","after":"804f2da6ff522bc103c529a79a1a2889a692dbbc","ref":"refs/heads/improved-display","pushedAt":"2024-01-02T00:24:55.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"nateberkopec","name":"Nate Berkopec","path":"/nateberkopec","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/845662?s=80&v=4"},"commit":{"message":"Always display totals control (so URL/name is hidden)","shortMessageHtmlLink":"Always display totals control (so URL/name is hidden)"}},{"before":"a41679ef3d987f2766c4a93e04e03a15d9906e66","after":"bbc8e70257efe3ea00e1bf8b2096b1073e27fb0a","ref":"refs/heads/improved-display","pushedAt":"2024-01-02T00:17:16.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"nateberkopec","name":"Nate Berkopec","path":"/nateberkopec","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/845662?s=80&v=4"},"commit":{"message":"Move page_name into its own method","shortMessageHtmlLink":"Move page_name into its own method"}},{"before":"fd2d5d3d06324d3ec0582a363591867ca5495ae5","after":"c83223f7ffb72f3731dc561821c01e10d559c494","ref":"refs/heads/master","pushedAt":"2024-01-02T00:10:08.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"nateberkopec","name":"Nate Berkopec","path":"/nateberkopec","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/845662?s=80&v=4"},"commit":{"message":"Add Ruby 3.3 gem to CI (#603)\n\n* Add ruby 3.3 to CI\r\n\r\n* Fix rubocop","shortMessageHtmlLink":"Add Ruby 3.3 gem to CI (#603)"}},{"before":"eb8e84723449a3bc0bd3b38cdcaa8f0734592c11","after":"fd2d5d3d06324d3ec0582a363591867ca5495ae5","ref":"refs/heads/master","pushedAt":"2024-01-02T00:07:02.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"nateberkopec","name":"Nate Berkopec","path":"/nateberkopec","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/845662?s=80&v=4"},"commit":{"message":"Replaced deprecated Rack::File to Rack::Files with rack v2.1.0+ (#604)","shortMessageHtmlLink":"Replaced deprecated Rack::File to Rack::Files with rack v2.1.0+ (#604)"}},{"before":null,"after":"a41679ef3d987f2766c4a93e04e03a15d9906e66","ref":"refs/heads/improved-display","pushedAt":"2023-12-29T00:52:35.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"nateberkopec","name":"Nate Berkopec","path":"/nateberkopec","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/845662?s=80&v=4"},"commit":{"message":"Badge: align columns, display page name","shortMessageHtmlLink":"Badge: align columns, display page name"}},{"before":"710a5ed52396190dc12dcfc6cc4c047091c82a45","after":"eb8e84723449a3bc0bd3b38cdcaa8f0734592c11","ref":"refs/heads/master","pushedAt":"2023-12-07T01:16:25.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"nateberkopec","name":"Nate Berkopec","path":"/nateberkopec","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/845662?s=80&v=4"},"commit":{"message":"3.3.0","shortMessageHtmlLink":"3.3.0"}},{"before":"f239b6e5fa2583790ed29aa548eca6fb53a42ead","after":"710a5ed52396190dc12dcfc6cc4c047091c82a45","ref":"refs/heads/master","pushedAt":"2023-12-07T01:13:56.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"nateberkopec","name":"Nate Berkopec","path":"/nateberkopec","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/845662?s=80&v=4"},"commit":{"message":"Add option to ignore garbage collection frames with flamegraphs (#599)\n\n* Add flamegraph_ignore_gc config\r\n\r\n* Add flamegraph_ignore_gc to query params","shortMessageHtmlLink":"Add option to ignore garbage collection frames with flamegraphs (#599)"}},{"before":"3c03459043c1e089f914cda95c6eee9e285c277e","after":"f239b6e5fa2583790ed29aa548eca6fb53a42ead","ref":"refs/heads/master","pushedAt":"2023-12-07T01:12:58.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"nateberkopec","name":"Nate Berkopec","path":"/nateberkopec","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/845662?s=80&v=4"},"commit":{"message":"3.2.1","shortMessageHtmlLink":"3.2.1"}},{"before":"b550ed3388cb03a3f25522ed208b568da576f9ca","after":"3c03459043c1e089f914cda95c6eee9e285c277e","ref":"refs/heads/master","pushedAt":"2023-12-07T01:11:11.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"nateberkopec","name":"Nate Berkopec","path":"/nateberkopec","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/845662?s=80&v=4"},"commit":{"message":"Quick fix for \"undefined local variable or method `query_string (#597)\n\n* fix for undefined\r\n local variable or method `query_string'\r\n\r\n* Add spec/dependency for memory_profiler","shortMessageHtmlLink":"Quick fix for \"undefined local variable or method `query_string (#597)"}},{"before":"bb57ed2440c322950be0f36b975df6c5facc054e","after":"b550ed3388cb03a3f25522ed208b568da576f9ca","ref":"refs/heads/master","pushedAt":"2023-12-06T01:12:18.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"nateberkopec","name":"Nate Berkopec","path":"/nateberkopec","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/845662?s=80&v=4"},"commit":{"message":"Asset version change","shortMessageHtmlLink":"Asset version change"}},{"before":"086949049a091a79ffdde4916ce8ec77695d89fe","after":"bb57ed2440c322950be0f36b975df6c5facc054e","ref":"refs/heads/master","pushedAt":"2023-12-06T01:09:35.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"nateberkopec","name":"Nate Berkopec","path":"/nateberkopec","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/845662?s=80&v=4"},"commit":{"message":"3.2.0 (#595)","shortMessageHtmlLink":"3.2.0 (#595)"}},{"before":null,"after":"f2974810126595db07971f986fb1df30066129b3","ref":"refs/heads/3-2","pushedAt":"2023-12-06T00:48:23.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"nateberkopec","name":"Nate Berkopec","path":"/nateberkopec","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/845662?s=80&v=4"},"commit":{"message":"3.2.0","shortMessageHtmlLink":"3.2.0"}},{"before":"f564b1258a53dc6b017db838bfeedc065eaa170f","after":"086949049a091a79ffdde4916ce8ec77695d89fe","ref":"refs/heads/master","pushedAt":"2023-12-06T00:30:19.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"nateberkopec","name":"Nate Berkopec","path":"/nateberkopec","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/845662?s=80&v=4"},"commit":{"message":"capture the number of rows instantiated for active record (#585)\n\nThis is close to telling you the number of rows brought back from the database\r\nIt doesn't show pluck results, so just need to keep that in mind.\r\n\r\nBut it does help you understand why so much memory is being taken up from active\r\nrecord queries.","shortMessageHtmlLink":"capture the number of rows instantiated for active record (#585)"}},{"before":"a072362940d2e9f1f5147d4cc409c75596749ac1","after":"f564b1258a53dc6b017db838bfeedc065eaa170f","ref":"refs/heads/master","pushedAt":"2023-12-06T00:28:17.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"nateberkopec","name":"Nate Berkopec","path":"/nateberkopec","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/845662?s=80&v=4"},"commit":{"message":"Default to ActiveSupport::Notifications for pg and mysql2 (#583)\n\nbackground: https://github.com/MiniProfiler/rack-mini-profiler/pull/418\r\n\r\nBy default, rack mini profiler is expected to use active support notifications\r\n\r\nBefore\r\n======\r\n\r\nOracle is working as described, but pg and mysql are not.\r\n\r\nSqlPatches.sql_patches returns [\"pg\"] for postgres, patches postgres,\r\nand does not leverage ActiveSupport::Notifications\r\n\r\nAfter\r\n=====\r\n\r\nLike oracle, postgres and mysql are double checking with patch_rails? to determine if the\r\nrails code should be patched.\r\n\r\nSqlPatches.sql_patches returns [] for postgres","shortMessageHtmlLink":"Default to ActiveSupport::Notifications for pg and mysql2 (#583)"}},{"before":"f88e6592de4d777be3bddf9d9b10fe228116d438","after":"a072362940d2e9f1f5147d4cc409c75596749ac1","ref":"refs/heads/master","pushedAt":"2023-12-06T00:27:11.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"nateberkopec","name":"Nate Berkopec","path":"/nateberkopec","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/845662?s=80&v=4"},"commit":{"message":"Support non-webpacker environments (#582)\n\nWebpacker can be defined, but not configured.\r\n\r\nIn this case, treating it like webpacker is not present\r\n\r\n```\r\nlib/mini_profiler_rails/railtie_methods.rb:55:in `get_webpacker_assets_path': undefined method `config' for Webpacker:Module (NoMethodError)\r\nDid you mean? concerning\r\n\tfrom lib/mini_profiler_rails/railtie.rb:33:in `initialize!'\r\n```\r\n\r\nsolution:\r\n\r\nensure the full chain is available","shortMessageHtmlLink":"Support non-webpacker environments (#582)"}},{"before":"62a6d2abfc4f56a0dc56ddc6fb693ddc02091572","after":"f88e6592de4d777be3bddf9d9b10fe228116d438","ref":"refs/heads/master","pushedAt":"2023-12-06T00:26:11.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"nateberkopec","name":"Nate Berkopec","path":"/nateberkopec","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/845662?s=80&v=4"},"commit":{"message":"Fix: account for vertical position bottom in placement of popup (#581)\n\nuse parent height to determine bottom style property for popup","shortMessageHtmlLink":"Fix: account for vertical position bottom in placement of popup (#581)"}},{"before":"0a9ffa1f5f5bdecec219ccad0bb978fea18d13e7","after":"62a6d2abfc4f56a0dc56ddc6fb693ddc02091572","ref":"refs/heads/master","pushedAt":"2023-12-05T23:49:01.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"nateberkopec","name":"Nate Berkopec","path":"/nateberkopec","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/845662?s=80&v=4"},"commit":{"message":"speedscope 1.16","shortMessageHtmlLink":"speedscope 1.16"}},{"before":"fb2c080de919db564f6d2f2f39cdb842f3a65c7a","after":"0a9ffa1f5f5bdecec219ccad0bb978fea18d13e7","ref":"refs/heads/master","pushedAt":"2023-12-05T23:44:11.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"nateberkopec","name":"Nate Berkopec","path":"/nateberkopec","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/845662?s=80&v=4"},"commit":{"message":"Rubocop","shortMessageHtmlLink":"Rubocop"}},{"before":"c5fc9b128074e9d8f328af3b98243b52cb1339dd","after":"fb2c080de919db564f6d2f2f39cdb842f3a65c7a","ref":"refs/heads/master","pushedAt":"2023-12-05T23:33:03.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"nateberkopec","name":"Nate Berkopec","path":"/nateberkopec","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/845662?s=80&v=4"},"commit":{"message":"Choose your RMP action via the X-Rack-Mini-Profiler header (#578)\n\nCo-authored-by: Nate Berkopec ","shortMessageHtmlLink":"Choose your RMP action via the X-Rack-Mini-Profiler header (#578)"}},{"before":"471d25fc050a36f1917deb699500c83a5b278153","after":"c5fc9b128074e9d8f328af3b98243b52cb1339dd","ref":"refs/heads/master","pushedAt":"2023-12-05T23:31:48.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"nateberkopec","name":"Nate Berkopec","path":"/nateberkopec","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/845662?s=80&v=4"},"commit":{"message":"Drop Ruby 2.6","shortMessageHtmlLink":"Drop Ruby 2.6"}},{"before":"a6d227bd4ebe49d654297a2e7e4de6dbe9204a69","after":"471d25fc050a36f1917deb699500c83a5b278153","ref":"refs/heads/master","pushedAt":"2023-12-05T23:23:47.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"nateberkopec","name":"Nate Berkopec","path":"/nateberkopec","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/845662?s=80&v=4"},"commit":{"message":"Empty script tag was removed from empty page","shortMessageHtmlLink":"Empty script tag was removed from empty page"}},{"before":"77467f3b0373515629e7760c88769f9b54935d4f","after":"459b711134d37cda720906e724adb86ca923473f","ref":"refs/heads/choose-action-via-http-header","pushedAt":"2023-12-05T23:21:11.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"nateberkopec","name":"Nate Berkopec","path":"/nateberkopec","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/845662?s=80&v=4"},"commit":{"message":"Choose your RMP action via the X-Rack-Mini-Profiler header","shortMessageHtmlLink":"Choose your RMP action via the X-Rack-Mini-Profiler header"}},{"before":"fc3e21567c38e4e3773e17eed13b749424f5d77e","after":"a6d227bd4ebe49d654297a2e7e4de6dbe9204a69","ref":"refs/heads/master","pushedAt":"2023-12-05T23:06:16.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"nateberkopec","name":"Nate Berkopec","path":"/nateberkopec","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/845662?s=80&v=4"},"commit":{"message":"Whoops: RMP fix","shortMessageHtmlLink":"Whoops: RMP fix"}},{"before":"88cfbb4e01028261bf2887844a1bde0867eafbc4","after":"fc3e21567c38e4e3773e17eed13b749424f5d77e","ref":"refs/heads/master","pushedAt":"2023-12-04T00:48:52.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"nateberkopec","name":"Nate Berkopec","path":"/nateberkopec","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/845662?s=80&v=4"},"commit":{"message":"Enable advanced debugging for the sample app (#594)","shortMessageHtmlLink":"Enable advanced debugging for the sample app (#594)"}},{"before":"570809bb3c179f116cccad226a3b5a1b6c224a8a","after":"88cfbb4e01028261bf2887844a1bde0867eafbc4","ref":"refs/heads/master","pushedAt":"2023-12-04T00:48:34.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"nateberkopec","name":"Nate Berkopec","path":"/nateberkopec","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/845662?s=80&v=4"},"commit":{"message":"Check if memcached is running during memcache spec, and fail if not running (#591)\n\n* Check if memcached is running during memcache spec, and fail if not running\r\n\r\nI was trying to run the test suite locally, and it failed here because I\r\ndidn't have memcached running (yet):\r\n\r\n 1) Rack::MiniProfiler::MemcacheStore page struct storage can store a PageStruct and retrieve it\r\n Failure/Error: @client.set(\"#{@prefix}#{page_struct[:id]}\", Marshal::dump(page_struct), @expires_in_seconds)\r\n\r\n Dalli::RingError:\r\n No server available\r\n # ./lib/mini_profiler/storage/memcache_store.rb:22:in `save'\r\n # ./spec/lib/storage/memcache_store_spec.rb:17:in `block (4 levels) in '\r\n\r\nThis adds a `alive?` method that the spec can check, and give more\r\nspecific information to the user. I've also included a\r\ndocker-compose.yml to give a one-liner to start memcached.\r\n\r\n* Don't bother with a docker-compose at this point. Suggest using docker directly","shortMessageHtmlLink":"Check if memcached is running during memcache spec, and fail if not r…"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAAD-wiF8wA","startCursor":null,"endCursor":null}},"title":"Activity · MiniProfiler/rack-mini-profiler"}