{"id":13395042,"url":"https://github.com/thoughtbot/suspenders","last_synced_at":"2025-05-14T07:01:43.949Z","repository":{"id":907909,"uuid":"666566","full_name":"thoughtbot/suspenders","owner":"thoughtbot","description":"A Rails template with our standard defaults.","archived":false,"fork":false,"pushed_at":"2025-03-17T12:11:49.000Z","size":1967,"stargazers_count":4033,"open_issues_count":35,"forks_count":527,"subscribers_count":100,"default_branch":"main","last_synced_at":"2025-05-07T06:17:19.290Z","etag":null,"topics":["rails","template"],"latest_commit_sha":null,"homepage":"https://thoughtbot.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/thoughtbot.png","metadata":{"files":{"readme":"README.md","changelog":"NEWS.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":"CODEOWNERS","security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null},"funding":{"github":"thoughtbot"}},"created_at":"2010-05-14T14:34:46.000Z","updated_at":"2025-05-04T15:09:59.000Z","dependencies_parsed_at":"2024-02-27T11:45:04.409Z","dependency_job_id":"36f5b6ef-1690-49d1-a8c9-413d68a34e31","html_url":"https://github.com/thoughtbot/suspenders","commit_stats":{"total_commits":1127,"total_committers":174,"mean_commits":6.477011494252873,"dds":0.8775510204081632,"last_synced_commit":"3bc560ec285d21a8d7f6e83b228b33887190e683"},"previous_names":[],"tags_count":87,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thoughtbot%2Fsuspenders","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thoughtbot%2Fsuspenders/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thoughtbot%2Fsuspenders/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thoughtbot%2Fsuspenders/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/thoughtbot","download_url":"https://codeload.github.com/thoughtbot/suspenders/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254092644,"owners_count":22013290,"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":["rails","template"],"created_at":"2024-07-30T17:01:40.191Z","updated_at":"2025-05-14T07:01:43.848Z","avatar_url":"https://github.com/thoughtbot.png","language":"Ruby","readme":"# Suspenders\n\n[![CI](https://github.com/thoughtbot/suspenders/actions/workflows/main.yml/badge.svg)](https://github.com/thoughtbot/suspenders/actions/workflows/main.yml)\n\nSuspenders is a [Rails Engine][] containing generators for configuring Rails\napplications with these [features][].\n\nIt is used by thoughtbot to get a jump start on a new or existing app. Use\nSuspenders if you're in a rush to build something amazing; don't use it if you\nlike missing deadlines.\n\n[Rails Engine]: https://guides.rubyonrails.org/engines.html\n[features]: ./FEATURES.md\n\n![Suspenders boy](https://media.tumblr.com/1TEAMALpseh5xzf0Jt6bcwSMo1_400.png)\n\n## Requirements\n\n- Rails `~\u003e 8.0`\n- Ruby `\u003e= 3.1`\n- Node `\u003e= 20.0.0`\n\n## Usage\n\nSuspenders can be used to create a new Rails application, or to enhance an\nexisting Rails application.\n\n### With New Rails Applications\n\nThis approach uses an [application template][] to generate a new Rails\napplication with Suspenders.\n\nWe skip the [default test framework][] in favor of [RSpec][], and [prefer\nPostgreSQL][] as our database.\n\nWe skip [RuboCop rules by default][] in favor of our [holistic linting rules][].\n\n#### Use the latest suspenders release:\n\n```\nrails new app_name \\\n --skip-rubocop \\\n --skip-test \\\n -d=postgresql \\\n -m=https://raw.githubusercontent.com/thoughtbot/suspenders/main/lib/install/web.rb\n```\n\n#### OR use the current (possibly unreleased) `main` branch of suspenders:\n\n```\nrails new app_name \\\n --suspenders-main \\\n --skip-rubocop \\\n --skip-test \\\n -d=postgresql \\\n -m=https://raw.githubusercontent.com/thoughtbot/suspenders/main/lib/install/web.rb\n```\n\nThen run `bin/setup` within the newly generated application.\n\nAlternatively, if you're using our [dotfiles][], then you can just run `rails new\napp_name`, or create your own [railsrc][] file with the following configuration:\n\n```\n--skip-rubocop\n--skip-test\n--database=postgresql\n-m=https://raw.githubusercontent.com/thoughtbot/suspenders/main/lib/install/web.rb\n```\n\n[application template]: https://guides.rubyonrails.org/rails_application_templates.html\n[default test framework]: https://guides.rubyonrails.org/testing.html\n[RSpec]: http://rspec.info\n[prefer PostgreSQL]: https://github.com/thoughtbot/dotfiles/pull/728\n[dotfiles]: https://github.com/thoughtbot/dotfiles\n[railsrc]: https://github.com/rails/rails/blob/7f7f9df8641e35a076fe26bd097f6a1b22cb4e2d/railties/lib/rails/generators/rails/app/USAGE#L5C1-L7\n[RuboCop rules by default]: https://guides.rubyonrails.org/v7.2/7_2_release_notes.html#add-omakase-rubocop-rules-by-default\n[holistic linting rules]: https://github.com/thoughtbot/suspenders/blob/main/FEATURES.md#linting\n\n### With Existing Rails Applications\n\nSuspenders can be used on an existing Rails application by adding it to the\n`:development` and `:test` group.\n\n```ruby\ngroup :development, :test do\n  gem \"suspenders\"\nend\n```\n\nOnce installed, you can invoke the web installation generator, which will\ninvoke all generators.\n\n```\nbin/rails g suspenders:install:web\n```\n\nOr, you can invoke generators individually. To see a list of available\ngenerators run:\n\n```\nbin/rails g | grep suspenders\n```\n\nTo learn more about a generator, run:\n\n```\nbin/rails g suspenders:[generator_name] --help\n```\n\n### Available Tasks\n\nSuspenders ships with several custom Rake tasks.\n\n```\nbin/rails suspenders:rake\nbin/rails suspenders:db:migrate\nbin/rails suspenders:cleanup:organize_gemfile\n```\n\n## Contributing\n\nSee the [CONTRIBUTING] document.\nThank you, [contributors]!\n\n[CONTRIBUTING]: CONTRIBUTING.md\n[contributors]: https://github.com/thoughtbot/suspenders/graphs/contributors\n\n## License\n\nSuspenders is Copyright (c) thoughtbot, inc.\nIt is free software, and may be redistributed\nunder the terms specified in the [LICENSE] file.\n\n[LICENSE]: /LICENSE\n\n\u003c!-- START /templates/footer.md --\u003e\n## About thoughtbot\n\n![thoughtbot](https://thoughtbot.com/thoughtbot-logo-for-readmes.svg)\n\nThis repo is maintained and funded by thoughtbot, inc.\nThe names and logos for thoughtbot are trademarks of thoughtbot, inc.\n\nWe love open source software!\nSee [our other projects][community].\nWe are [available for hire][hire].\n\n[community]: https://thoughtbot.com/community?utm_source=github\n[hire]: https://thoughtbot.com/hire-us?utm_source=github\n\n\n\u003c!-- END /templates/footer.md --\u003e\n","funding_links":["https://github.com/sponsors/thoughtbot"],"categories":["Ruby","Rails Plugins","Happy Exploring 🤘","Rails Templates 👷 (open source)","Rails Application Generators","Gems","Starter Apps","Starters/Boilerplates"],"sub_categories":["Rails App Templates","Rails","Articles"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthoughtbot%2Fsuspenders","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fthoughtbot%2Fsuspenders","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthoughtbot%2Fsuspenders/lists"}