{"id":14969855,"url":"https://github.com/igorkasyanchuk/sabotage","last_synced_at":"2025-09-17T16:32:07.948Z","repository":{"id":56894100,"uuid":"233219061","full_name":"igorkasyanchuk/sabotage","owner":"igorkasyanchuk","description":"Coding \u0026 debugging must be fun. Make life a bit harder for your colleagues :)","archived":false,"fork":false,"pushed_at":"2022-05-21T17:49:56.000Z","size":204,"stargazers_count":17,"open_issues_count":5,"forks_count":1,"subscribers_count":4,"default_branch":"master","last_synced_at":"2024-11-22T15:41:00.308Z","etag":null,"topics":["ruby","ruby-on-rails"],"latest_commit_sha":null,"homepage":"https://www.railsjazz.com/","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/igorkasyanchuk.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"MIT-LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null},"funding":{"patreon":"igorkasyanchuk"}},"created_at":"2020-01-11T11:09:20.000Z","updated_at":"2024-01-29T17:12:49.000Z","dependencies_parsed_at":"2022-08-20T16:10:45.295Z","dependency_job_id":null,"html_url":"https://github.com/igorkasyanchuk/sabotage","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/igorkasyanchuk%2Fsabotage","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/igorkasyanchuk%2Fsabotage/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/igorkasyanchuk%2Fsabotage/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/igorkasyanchuk%2Fsabotage/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/igorkasyanchuk","download_url":"https://codeload.github.com/igorkasyanchuk/sabotage/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":227617697,"owners_count":17794447,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ruby","ruby-on-rails"],"created_at":"2024-09-24T13:42:30.398Z","updated_at":"2025-09-17T16:32:07.934Z","avatar_url":"https://github.com/igorkasyanchuk.png","language":"Ruby","funding_links":["https://patreon.com/igorkasyanchuk","https://www.patreon.com/igorkasyanchuk","https://buymeacoffee.com/igorkasyanchuk"],"categories":[],"sub_categories":[],"readme":"# Sabotage\n\n[![RailsJazz](https://github.com/igorkasyanchuk/rails_time_travel/blob/main/docs/my_other.svg?raw=true)](https://www.railsjazz.com)\n[![https://www.patreon.com/igorkasyanchuk](https://github.com/igorkasyanchuk/rails_time_travel/blob/main/docs/patron.svg?raw=true)](https://www.patreon.com/igorkasyanchuk)\n\n[![\"Buy Me A Coffee\"](https://github.com/igorkasyanchuk/get-smart/blob/main/docs/snapshot-bmc-button-small.png?raw=true)](https://buymeacoffee.com/igorkasyanchuk)\n\nCoding \u0026 debugging must be fun. Make life a bit harder for your colleagues :)\n\nJust try to put this code without code review into your app and start watching reactions of your colleagues.\n\nCode from this gem is changing logs and randomizing log output. It's impacting output like:\n\n```\n  Post Load (0.1ms)  SELECT \"posts\".* FROM \"posts\" ORDER BY \"posts\".\"id\" DESC LIMIT ?  [[\"LIMIT\", 1]\n  ↳ app/views/posts/index.html.erb:7\n  Post Load (0.2ms)  SELECT \"posts\".* FROM \"posts\"\n  ↳ app/views/posts/index.html.erb:25\n```\n\nIt will change numbers in `[[\"LIMIT\", 1]` to random `[[\"LIMIT\", 2]` or `[[\"LIMIT\", 5]`.\nOr `app/views/posts/index.html.erb:7` to `app/views/posts/index.html.erb:17` or to `app/views/posts/index.html.erb:5`\n\n[![Sample](https://raw.githubusercontent.com/igorkasyanchuk/sabotage/master/docs/sabotage.png)](https://raw.githubusercontent.com/igorkasyanchuk/sabotage/master/docs/sabotage.png)\n\n## Usage\n\nThere are 2 options how you can make a sabotage on your project.\n\n- add as gem into Gemfile\n- without adding a gem, just put code below into some existing `config/initializers/*`\n\n```ruby\neval(Base64.decode64(%{CiAgY2xhc3MgU3RyaW5nCiAgICBkZWYgdG9fcmFuZG9tX251bWJlcgogICAg\nICByYW5kKHNlbGYubWF0Y2goL1xkKy8pWzBdLnRvX2kgKiAyKSArIDEKICAg\nIGVuZAogIGVuZAogIG1vZHVsZSBBY3RpdmVTdXBwb3J0CiAgICBjbGFzcyBM\nb2dnZXIgPCA6OkxvZ2dlcgogICAgICBjbGFzcyBTaW1wbGVGb3JtYXR0ZXIg\nPCA6OkxvZ2dlcjo6Rm9ybWF0dGVyCiAgICAgICAgZGVmIGNhbGwoc2V2ZXJp\ndHksIHRpbWVzdGFtcCwgcHJvZ25hbWUsIG1zZykKICAgICAgICAgIHN0ciA9\nICIje1N0cmluZyA9PT0gbXNnID8gbXNnIDogbXNnLmluc3BlY3R9XG4iCiAg\nICAgICAgICBzdHIuZ3N1YiEoL1xkK1xdLykgeyB8ZXwgZS50b19yYW5kb21f\nbnVtYmVyIH0KICAgICAgICAgIFsncmInLCAnc2xpbScsICdoYW1sJywgJ2Vy\nYicsICdqYnVpbGRlciddLmVhY2ggZG8gfGVlfAogICAgICAgICAgICBzdHIu\nZ3N1YiEoL1wuI3tlZX06XGQrLykgICB7IHxlfCAiLiN7ZWV9OiN7ZS50b19y\nYW5kb21fbnVtYmVyfSIgfQogICAgICAgICAgZW5kCiAgICAgICAgICBzdHIK\nICAgICAgICBlbmQKICAgICAgZW5kCiAgICBlbmQKICBlbmQK}))\n```\n\n(if you like to see source - you can do it here: https://www.base64decode.org/)\n\n\n## Installation as Gem\n\n```ruby\ngem 'sabotage'\n```\n\nor\n\nadd into initializers, or application.rb at the bottom of the file.\n\n## Contributing\n\nYou are welcome to contribute :)\n\n## License\n\nThe gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).\n\n[\u003cimg src=\"https://github.com/igorkasyanchuk/rails_time_travel/blob/main/docs/more_gems.png?raw=true\"\n/\u003e](https://www.railsjazz.com/?utm_source=github\u0026utm_medium=bottom\u0026utm_campaign=sabotage)\n\n\n[![\"Buy Me A Coffee\"](https://github.com/igorkasyanchuk/get-smart/blob/main/docs/snapshot-bmc-button.png?raw=true)](https://buymeacoffee.com/igorkasyanchuk)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Figorkasyanchuk%2Fsabotage","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Figorkasyanchuk%2Fsabotage","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Figorkasyanchuk%2Fsabotage/lists"}