{"id":18868807,"url":"https://github.com/rack/rackup","last_synced_at":"2025-10-20T07:54:32.716Z","repository":{"id":55142673,"uuid":"519928007","full_name":"rack/rackup","owner":"rack","description":null,"archived":false,"fork":false,"pushed_at":"2025-08-06T14:32:07.000Z","size":106,"stargazers_count":55,"open_issues_count":4,"forks_count":16,"subscribers_count":7,"default_branch":"main","last_synced_at":"2025-10-09T19:21:40.429Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"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/rack.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":null,"funding":null,"license":"license.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"security.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2022-08-01T01:31:28.000Z","updated_at":"2025-10-08T02:06:01.000Z","dependencies_parsed_at":"2024-06-18T20:08:38.249Z","dependency_job_id":"c3dbf350-c7d5-487d-a461-32ead00a6df8","html_url":"https://github.com/rack/rackup","commit_stats":{"total_commits":29,"total_committers":2,"mean_commits":14.5,"dds":0.03448275862068961,"last_synced_commit":"eaea24a3d64a1b117df943a9d06779e659bb61af"},"previous_names":[],"tags_count":11,"template":false,"template_full_name":null,"purl":"pkg:github/rack/rackup","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frackup","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frackup/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frackup/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frackup/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rack","download_url":"https://codeload.github.com/rack/rackup/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frackup/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279110824,"owners_count":26105907,"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-10-15T02:00:07.814Z","response_time":56,"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":[],"created_at":"2024-11-08T05:14:50.445Z","updated_at":"2025-10-20T07:54:32.701Z","avatar_url":"https://github.com/rack.png","language":"Ruby","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Rackup\n\n`rackup` provides a command line interface for running a Rack-compatible application. It also provides a generic interface for starting a `rack`-compatible server: `Rackup::Handler`. It is not designed for production use.\n\n[![Development Status](https://github.com/rack/rackup/workflows/Test/badge.svg)](https://github.com/rack/rackup/actions?workflow=Test)\n\n## Installation\n\n``` bash\n-- For Puma\n$ gem install rackup puma\n\n-- For Falcon\n$ gem install rackup falcon\n```\n\n## Usage\n\nIn a directory with your `config.ru` simply run the command:\n\n``` bash\n$ rackup\n```\n\nYour application should now be available locally, typically `http://localhost:9292`.\n\n### Server Handler\n\nYou can also use `Rackup::Handler` to start a server programmatically:\n\n``` ruby\nrequire 'rackup'\n\n# Use the default server:\nhandler = Rackup::Handler.default\nhandler.run(app, **options)\n\n# Use a specific server:\nhandler = Rackup::Handler.get('puma')\nhandler.run(app, **options)\n```\n\nDo not require specific handlers or assume they will exist/work. Instead, use the `default` method to get the best available handler.\n\n## (Soft) Deprecation\n\nFor a long time, `rackup` (the executable and implementation) was part of `rack`, and `webrick` was the default server, included with Ruby. It made it easy to run a Rack application without having to worry about the details of the server - great for documentation and demos.\n\nWhen `webrick` was removed from the Ruby standard library, `rack` started depending on `webrick` as a default server. Every web application and server would pull in `webrick` as a dependency, even if it was not used. To avoid this, the `rackup` component of `rack` was moved to this gem, which depended on `webrick`.\n\nHowever, many libraries (e.g. `rails`) still depend on `rackup` and end up pulling in `webrick` as a dependency. To avoid this, the decision was made to cut `webrick` as a dependency of `rackup`. This means that `rackup` no longer depends on `webrick`, and you need to install it separately if you want to use it.\n\nAs a consequence of this, the value of the `rackup` gem is further diminished. In other words, why would you do this:\n\n``` bash\n$ gem install rackup puma\n$ rackup ...\n```\n\nwhen you can do this:\n\n``` bash\n$ gem install puma\n$ puma ...\n```\n\nIn summary, the maintainers of `rack` recommend the following:\n\n  - Libraries should not depend on `rackup` if possible. `rackup` as an executable made sense when webrick shipped with Ruby, so there was always a fallback. But that hasn't been true since Ruby 3.0.\n  - Frameworks and applications should focus on providing `config.ru` files, so that users can use the webserver program of their choice directly (e.g. puma, falcon).\n  - There is still some value in the generic `rackup` and `Rackup::Handler` interfaces, but we encourage users to invoke the server command directly if possible.\n  - Webrick should be avoided if possible.\n\n## Contributing\n\nWe welcome contributions to this project.\n\n1.  Fork it.\n2.  Create your feature branch (`git checkout -b my-new-feature`).\n3.  Commit your changes (`git commit -am 'Add some feature'`).\n4.  Push to the branch (`git push origin my-new-feature`).\n5.  Create new Pull Request.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frack%2Frackup","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frack%2Frackup","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frack%2Frackup/lists"}