{"id":30971554,"url":"https://github.com/neodelf/lecter","last_synced_at":"2025-09-12T02:20:02.448Z","repository":{"id":35012344,"uuid":"196442524","full_name":"Neodelf/lecter","owner":"Neodelf","description":":boom: Show executable code by request","archived":false,"fork":false,"pushed_at":"2024-08-01T23:51:34.000Z","size":165,"stargazers_count":94,"open_issues_count":7,"forks_count":7,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-07-28T01:31:59.773Z","etag":null,"topics":["code-analyzer","debugger-visualizer","lecter","rails","ruby","tool"],"latest_commit_sha":null,"homepage":"","language":"HTML","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/Neodelf.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.txt","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-07-11T17:58:02.000Z","updated_at":"2024-04-25T15:57:28.000Z","dependencies_parsed_at":"2025-03-31T03:30:52.445Z","dependency_job_id":"08599297-21f3-43d9-a784-c56898376e9f","html_url":"https://github.com/Neodelf/lecter","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/Neodelf/lecter","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Neodelf%2Flecter","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Neodelf%2Flecter/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Neodelf%2Flecter/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Neodelf%2Flecter/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Neodelf","download_url":"https://codeload.github.com/Neodelf/lecter/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Neodelf%2Flecter/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":274743352,"owners_count":25341134,"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","status":"online","status_checked_at":"2025-09-12T02:00:09.324Z","response_time":60,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["code-analyzer","debugger-visualizer","lecter","rails","ruby","tool"],"created_at":"2025-09-12T02:20:00.736Z","updated_at":"2025-09-12T02:20:02.432Z","avatar_url":"https://github.com/Neodelf.png","language":"HTML","readme":"\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"https://github.com/Neodelf/staff/blob/master/lecter_web_with_text.png?raw=true\" alt=\"Lecter Logo\" width=\"866px\"/\u003e\n\n  \u003ch1 color=\"#98793a\"\u003eLecter shows an executed code by a URL request. \u003cbr/\u003e\n    Debug an unknown code in SECONDS!\n  \u003c/h1\u003e\n\n  [![Gem Version][0]][1]\n  [![Ruby Style Guide][15]][16]\n  [![CircleCI][2]][3]\n  [![Test Coverage][12]][13]\n  [![Maintainability][10]][11]\n  [![All Contributors](https://img.shields.io/badge/all_contributors-5-green.svg)](#contributors-)\n\u003c/div\u003e\n\n\u003e Quid pro quo. I tell you things, you tell me things. Not about this case, though. About yourself. \u003cbr/\u003e\n\u003e -- Hannibal Lecter / The Silence of the Lambs\n\n----------\n\n## Table of contents\n* [:rotating_light: Problems](#rotating_light-problems)\n* [:rocket: Solutions](#rocket-solutions)\n* [:bangbang: Requirements](#bangbang-requirements)\n* [:hammer_and_wrench: Installation](#hammer_and_wrench-installation)\n* [:joystick: Usage](#joystick-usage)\n* [:man_technologist: Examples](#man_technologist-examples)\n* [:heart: Sponsors](#card_file_box-license)\n* [:desktop_computer: Contributing \u0026 Contributors](#desktop_computer-contributing--contributors)\n* [:card_file_box: License](#card_file_box-license)\n\n## :rotating_light: Problems\n1. Developers **don't know** how their app works.\n2. Reading code is a **long** process.\n3. Memorizing many lines of code is **difficult**.\n\n## :rocket: Solutions\n1. The main purpose of this gem is **to help developers understand which code is executed** by a request.\u003cbr\u003e\n\n2. Gem's purpose could be compared to visiting a doctor:\n   You give the symptoms of your disease and **receive a diagnosis**.\u003cbr\u003e\n   You give the parameters of a request and **receive executable code**.\n\n3. You don't have to work with debuggers, read and remember many lines of code.\u003cbr\u003e\n   Just **give \u0026 receive**!\n\n## :bangbang: Requirements\nPlease **use a multithreading server** such as a [puma][4] server with more than `1` worker.\u003cbr\u003e\nFor more information about how to tune a puma server, please visit this [link][5].\n\n## :hammer_and_wrench: Installation\nInstalling is a **very simple** process.\n\n1. **Add** the gem to your Gemfile:\n\n    ```ruby\n    gem 'lecter'\n    ```\n\n2. **Execute** in a terminal in your app's directory:\n\n    ```zsh\n    bundle install\n    ```\n\n3. **Add** routes to your `config/routes.rb`:\n    ```ruby\n    mount Lecter::Engine =\u003e '/lecter' if Rails.env.development?\n    ```\n\n## :joystick: Usage\nFollow **two** simple steps:\n\n1. **Go** to `/lecter`\n\n2. **Fill in** the form fields with request parameters:\n\n   `HTTP method` - request's method\u003cbr\u003e\n   `Endpoint` - use absolute route like `localhost:3000/blogs`\u003cbr\u003e\n   `Headers` - request's headers\n   `Body(raw)` - request's parameters\n\n## :man_technologist: Examples\nHere is an example with a **POST** request:\n\n1. **Go** to `localhost:3000/lecter`\n\n2. **Fill** in the form with:\n\n   `HTTP method` - `POST`\u003cbr\u003e\n   `Endpoint` - `localhost:3000/posts`\u003cbr\u003e\n   `Headers` - `content_type=text/html,accept=*/*`\u003cbr\u003e\n   `Body(raw)` - `\"post\"=\u003e{\"title\"=\u003e\"New title\", \"description\"=\u003e\"Desciption\"}`\n\n    \u003cimg src=\"https://raw.githubusercontent.com/Neodelf/staff/master/lecter_post_headers.png\" alt=\"lecter example post form\" title=\"Example Lecter POST request form\" /\u003e\n\n3. **Submit** the form\n4. **Review** the result\n\n    \u003cimg src=\"https://raw.githubusercontent.com/Neodelf/staff/master/lecter-post-result.png\" alt=\"lecter post form result\" title=\"Example Lecter POST request result\" /\u003e\n\n## :heart: Sponsors\n[\u003cimg width=\"200\" src=\"https://github.com/Neodelf/staff/blob/master/evrone-sponsored-logo.png?raw=true\" alt=\"Evrone Logo\"/\u003e][14]\n\n## :desktop_computer: Contributing \u0026 Contributors\n1. Bug reports and pull requests **are welcome**.\n2. There are many issues as a proposal to improve this library. If you have any ideas, please **feel free** to write your thoughts in a [new issue][7].\n3. Choose **what you like** to fix or improve on the [issues list][8]. You can ask any questions in the comments.\n4. :bangbang: **Mention of each contributor** will be on the README file.\n\n**Thanks** goes to these wonderful people:\n\n\u003c!-- prettier-ignore-start --\u003e\n\u003c!-- markdownlint-disable --\u003e\n\u003ctable\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e\n      \u003ca href=\"https://github.com/pineapplethief\"\u003e\n        \u003cimg src=\"https://avatars1.githubusercontent.com/u/4012690?v=4\" width=\"100px;\" alt=\"\"/\u003e\n        \u003cbr /\u003e\n        \u003csub\u003e\u003cb\u003eAleksey Glukhov\u003c/b\u003e\u003c/sub\u003e\n      \u003c/a\u003e\n      \u003cbr /\u003e\n      \u003ca href=\"https://github.com/Neodelf/lecter/commits?author=pineapplethief\" title=\"Code\"\u003e💻\u003c/a\u003e\n      \u003ca href=\"https://github.com/Neodelf/lecter/commits?author=pineapplethief\" title=\"Documentation\"\u003e📖\u003c/a\u003e\n    \u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\n      \u003ca href=\"https://github.com/atayl16\"\u003e\n        \u003cimg src=\"https://avatars.githubusercontent.com/u/24377351?v=4\" width=\"100px;\" alt=\"\"/\u003e\n        \u003cbr /\u003e\n        \u003csub\u003e\u003cb\u003eAlisha Taylor\u003c/b\u003e\u003c/sub\u003e\n      \u003c/a\u003e\n      \u003cbr /\u003e\n      \u003ca href=\"https://github.com/Neodelf/lecter/commits?author=atayl16\" title=\"Documentation\"\u003e📖\u003c/a\u003e\n    \u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\n      \u003ca href=\"https://github.com/gambala\"\u003e\n        \u003cimg src=\"https://avatars.githubusercontent.com/u/2563426?v=4\" width=\"100px;\" alt=\"\"/\u003e\n        \u003cbr /\u003e\n        \u003csub\u003e\u003cb\u003eVitaliy Emeliyantsev\u003c/b\u003e\u003c/sub\u003e\n      \u003c/a\u003e\n      \u003cbr /\u003e\n      \u003ca href=\"https://github.com/Neodelf/lecter/commits?author=gambala\" title=\"Documentation\"\u003e📖\u003c/a\u003e\n    \u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\n      \u003ca href=\"https://github.com/oskaror\"\u003e\n        \u003cimg src=\"https://avatars.githubusercontent.com/u/12644040?v=4\" width=\"100px;\" alt=\"\"/\u003e\n        \u003cbr /\u003e\n        \u003csub\u003e\u003cb\u003eOskar Janusz\u003c/b\u003e\u003c/sub\u003e\n      \u003c/a\u003e\n      \u003cbr /\u003e\n      \u003ca href=\"https://github.com/Neodelf/lecter/commits?author=oskaror\" title=\"Code\"\u003e💻\u003c/a\u003e\n    \u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\u003c!-- markdownlint-enable --\u003e\n\u003c!-- prettier-ignore-end --\u003e\n\n## :card_file_box: License\nThe gem is available as open source under the terms of the [MIT License][9].\n\n[0]: https://badge.fury.io/rb/lecter.svg\n[1]: https://badge.fury.io/rb/lecter\n[2]: https://circleci.com/gh/Neodelf/lecter.svg?style=shield\n[3]: https://circleci.com/gh/neodelf/lecter\n[4]: https://github.com/puma/puma\n[5]: https://github.com/puma/puma#clustered-mode\n[7]: https://github.com/Neodelf/lecter/issues/new\n[8]: https://github.com/Neodelf/lecter/issues\n[9]: https://opensource.org/licenses/MIT\n[10]: https://api.codeclimate.com/v1/badges/45d57f439d66990490f1/maintainability\n[11]: https://codeclimate.com/github/Neodelf/lecter/maintainability\n[12]: https://api.codeclimate.com/v1/badges/45d57f439d66990490f1/test_coverage\n[13]: https://codeclimate.com/github/Neodelf/lecter/test_coverage\n[14]: https://evrone.com\n[15]: https://img.shields.io/badge/code_style-rubocop-brightgreen.svg\n[16]: https://rubystyle.guide\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fneodelf%2Flecter","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fneodelf%2Flecter","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fneodelf%2Flecter/lists"}