{"id":13878099,"url":"https://github.com/the-teacher/rails7-startkit","last_synced_at":"2025-04-07T14:11:13.961Z","repository":{"id":65406545,"uuid":"585707405","full_name":"the-teacher/rails7-startkit","owner":"the-teacher","description":"Launch Rails with 1 shell command!","archived":false,"fork":false,"pushed_at":"2024-09-19T12:13:02.000Z","size":12757,"stargazers_count":579,"open_issues_count":15,"forks_count":79,"subscribers_count":22,"default_branch":"master","last_synced_at":"2025-03-31T13:15:28.917Z","etag":null,"topics":["docker","docker-compose","elasticsearch","pgsql","rails","redis","ruby","sanitize","sanitizer","sidekiq","sphinx","whenever"],"latest_commit_sha":null,"homepage":"https://github.com/the-teacher/rails7-startkit","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/the-teacher.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.md","code_of_conduct":".github/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":"2023-01-05T21:33:17.000Z","updated_at":"2025-02-10T15:25:31.000Z","dependencies_parsed_at":"2024-12-06T20:06:25.201Z","dependency_job_id":"ec9aa794-cf65-4af0-9935-7929e02a1e4b","html_url":"https://github.com/the-teacher/rails7-startkit","commit_stats":{"total_commits":346,"total_committers":8,"mean_commits":43.25,"dds":0.2283236994219653,"last_synced_commit":"51bb127e2114910bdc759f6974740a5c4703a53d"},"previous_names":[],"tags_count":13,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/the-teacher%2Frails7-startkit","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/the-teacher%2Frails7-startkit/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/the-teacher%2Frails7-startkit/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/the-teacher%2Frails7-startkit/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/the-teacher","download_url":"https://codeload.github.com/the-teacher/rails7-startkit/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247666008,"owners_count":20975787,"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":["docker","docker-compose","elasticsearch","pgsql","rails","redis","ruby","sanitize","sanitizer","sidekiq","sphinx","whenever"],"created_at":"2024-08-06T08:01:39.801Z","updated_at":"2025-04-07T14:11:13.930Z","avatar_url":"https://github.com/the-teacher.png","language":"Ruby","funding_links":[],"categories":["Ruby"],"sub_categories":[],"readme":"# Rails 7. Start Kit\n\n\u003cimg alt=\"Rails 7. Start kit. v2.1\" src=\"https://github.com/the-teacher/rails7-startkit/assets/496713/e90eaf2a-ed8a-4e37-9fdd-a4edb6174de1\"\u003e\n\n\u003ch2\u003eInstall and Run \u003ccode\u003eRuby\u0026nbsp;on\u0026nbsp;Rails\u003c/code\u003e in\u0026nbsp;Minutes!\u003c/h2\u003e\n\n\u003ci\u003eCopy \u0026 Paste in your terminal\u003c/i\u003e\n\n❤️ **Linux / MacOS**\n\n```sh\ngit clone https://github.com/the-teacher/rails7-startkit.git \u0026\u0026 \\\n  cd rails7-startkit \u0026\u0026 \\\n  ruby bin/setup\n```\n\n💙 **Windows**\n\n```sh\ngit clone https://github.com/the-teacher/rails7-startkit.git \u0026 cd rails7-startkit \u0026 ruby bin/setup\n```\n\n### What Is That?\n\nRails App in a Docker container with some popular preinstalled tools.\n\n### Why Do I Need It?\n\nSave hours, days or weeks on setting up a typical Rails app.\n\n### What Cases for Using It?\n\n- You start new Rails project\n- You need a playground for experiments\n- You learn Rails and related technologies\n- You teach people or record videos about Rails\n- You are going to write a new article about Rails\n### How it works\n\n![Rails 7. Start Kit](https://user-images.githubusercontent.com/496713/222904528-185c312f-88cc-42d5-9d52-068690a5db05.gif)\n\n## What Is Under the Hood?\n\n\u003ctable\u003e\n  \u003cthead\u003e\n    \u003ctr\u003e\n      \u003cth\u003eLogotype\u003c/th\u003e\n      \u003cth\u003eDescription\u003c/th\u003e\n      \u003cth\u003eWhy it was added\u003c/th\u003e\n    \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n  \u003ctr\u003e\n    \u003ctd colspan=\"3\"\u003e\u003ch3\u003eMain\u003c/h3\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003e\u003cimg width=\"100px\" alt=\"docker\" src=\"Rails7StartKit/assets/images/docker.png\"\u003e\u003c/td\u003e\n    \u003ctd\u003e\u003cb\u003eDocker\u003c/b\u003e\u003c/td\u003e\n    \u003ctd\u003eHelps to keep all required services in containers. To have fast and predictable installation process in minutes. \u003ca href=\"https://hub.docker.com/r/iamteacher/rails7/tags\" target=\"_blank\"\u003eDocker Images are here.\u003c/a\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003e\u003cimg width=\"100px\" alt=\"ruby\" src=\"Rails7StartKit/assets/images/ruby.png\"\u003e\u003c/td\u003e\n    \u003ctd\u003e\u003cb\u003eRuby 3.2\u003c/b\u003e\u003c/td\u003e\n    \u003ctd\u003eMost recent version of Ruby\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003e\u003cimg width=\"100px\" alt=\"rails7\" src=\"Rails7StartKit/assets/images/rails7.png\"\u003e\u003c/td\u003e\n    \u003ctd\u003e\u003cb\u003eRails 7\u003c/b\u003e\u003c/td\u003e\n    \u003ctd\u003eMost recent version of Rails\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003e\u003cimg width=\"100px\" alt=\"pgsql\" src=\"Rails7StartKit/assets/images/pgsql.png\"\u003e\u003c/td\u003e\n    \u003ctd\u003e\u003cb\u003e\u003ca href=\"https://www.ruby-toolbox.com/categories/SQL_Database_Adapters\"\u003ePostgresSQL\u003c/a\u003e\u003c/b\u003e\u003c/td\u003e\n    \u003ctd\u003eMost popular relational database\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd colspan=\"3\"\u003e\u003ch3\u003eCache and Delayed Jobs\u003c/h3\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003e\u003cimg width=\"100px\" alt=\"redis\" src=\"Rails7StartKit/assets/images/redis.png\"\u003e\u003c/td\u003e\n    \u003ctd\u003e\u003cb\u003e\u003ca href=\"https://redis.io\"\u003eRedis\u003c/a\u003e\u003c/b\u003e\u003c/td\u003e\n    \u003ctd\u003eIn-memory data store. For caching and as a dependency of Sidekiq\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003e\u003cimg width=\"100px\" alt=\"sidekiq\" src=\"Rails7StartKit/assets/images/sidekiq.png\"\u003e\u003c/td\u003e\n    \u003ctd\u003e\u003cb\u003e\u003ca href=\"https://www.ruby-toolbox.com/categories/Background_Jobs\"\u003eSidekiq\u003c/a\u003e\u003c/b\u003e\u003c/td\u003e\n    \u003ctd\u003eJob Scheduler and Async Tasks Executor. Can be used as a stand alone tool or as ActiveJob backend\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003e\u003cimg width=\"100px\" alt=\"whenever\" src=\"Rails7StartKit/assets/images/whenever.png\"\u003e\u003c/td\u003e\n    \u003ctd\u003e\u003cb\u003e\u003ca href=\"https://www.ruby-toolbox.com/categories/scheduling\"\u003ewhenever\u003c/a\u003e\u003c/b\u003e\u003c/td\u003e\n    \u003ctd\u003eLinux Cron based periodical tasks\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd colspan=\"3\"\u003e\u003ch3\u003eFull Text Search\u003c/h3\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003e\u003cimg width=\"100px\" alt=\"elastic\" src=\"Rails7StartKit/assets/images/elastic.png\"\u003e\u003c/td\u003e\n    \u003ctd\u003e\u003cb\u003e\u003ca href=\"https://www.elastic.co\"\u003eElasticsearch\u003c/a\u003e\u003c/b\u003e\u003c/td\u003e\n    \u003ctd\u003eThe world’s leading Search engine\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003e\u003cimg width=\"100px\" alt=\"chewy\" src=\"Rails7StartKit/assets/images/chewy.png\"\u003e\u003c/td\u003e\n    \u003ctd\u003e\u003cb\u003e\u003ca href=\"https://www.ruby-toolbox.com/projects/chewy\"\u003eChewy\u003c/a\u003e\u003c/b\u003e\u003c/td\u003e\n    \u003ctd\u003eRuby Connector to Elasticsearch\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd colspan=\"3\"\u003e\u003ch3\u003eFront-end\u003c/h3\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003e\u003cimg width=\"100px\" alt=\"bootstrap\" src=\"Rails7StartKit/assets/images/bootstrap.png\"\u003e\u003c/td\u003e\n    \u003ctd\u003e\u003cb\u003e\u003ca href=\"https://github.com/twbs/bootstrap\"\u003eBootstrap\u003c/a\u003e\u003c/b\u003e\u003c/td\u003e\n    \u003ctd\u003eOld but Gold Framework for Web\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003e\u003cimg width=\"100px\" alt=\"import-maps\" src=\"Rails7StartKit/assets/images/esbuild.png\"\u003e\u003c/td\u003e\n    \u003ctd\u003e\u003cb\u003e\u003ca href=\"https://esbuild.github.io/\"\u003eES Build\u003c/a\u003e\u003c/b\u003e\u003c/td\u003e\n    \u003ctd\u003eAn extremely fast bundler for the web\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003e\u003cimg width=\"100px\" alt=\"import-maps\" src=\"Rails7StartKit/assets/images/import-maps.png\"\u003e\u003c/td\u003e\n    \u003ctd\u003e\u003cb\u003e\u003ca href=\"https://github.com/rails/importmap-rails\"\u003eImport Maps\u003c/a\u003e\u003c/b\u003e\u003c/td\u003e\n    \u003ctd\u003eRails' recommended way to process JavaScript\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003e\u003cimg width=\"100px\" alt=\"sprockets\" src=\"Rails7StartKit/assets/images/sprockets.png\"\u003e\u003c/td\u003e\n    \u003ctd\u003e\u003cb\u003e\u003ca href=\"https://github.com/rails/sprockets\"\u003eSprockets\u003c/a\u003e\u003c/b\u003e\u003c/td\u003e\n    \u003ctd\u003eRack-based asset packager\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd colspan=\"3\"\u003e\u003ch3\u003eApplication Configuration\u003c/h3\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003e\u003cimg width=\"100px\" alt=\"gem dotenv-rails\" src=\"Rails7StartKit/assets/images/dotenv.png\"\u003e\u003c/td\u003e\n    \u003ctd\u003e\u003cb\u003e\u003ca href=\"https://www.ruby-toolbox.com/projects/dotenv\"\u003egem\u0026nbsp;\"dotenv\"\u003c/a\u003e\u003c/b\u003e\u003c/td\u003e\n    \u003ctd\u003eENV variables management tool\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003e\u003cimg width=\"100px\" alt=\"gem config\" src=\"Rails7StartKit/assets/images/config.png\"\u003e\u003c/td\u003e\n    \u003ctd\u003e\u003cb\u003e\u003ca href=\"https://www.ruby-toolbox.com/projects/config\"\u003egem\u0026nbsp;\"config\"\u003c/a\u003e\u003c/b\u003e\u003c/td\u003e\n    \u003ctd\u003eConfiguration management tool\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd colspan=\"3\"\u003e\u003ch3\u003eApplication Level\u003c/h3\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003e\u003cimg width=\"100px\" alt=\"puma\" src=\"Rails7StartKit/assets/images/nginx.png\"\u003e\u003c/td\u003e\n    \u003ctd\u003e\u003cb\u003e\u003ca href=\"https://www.ruby-toolbox.com/categories/web_servers\"\u003eNginx\u003c/a\u003e\u003c/b\u003e\u003c/td\u003e\n    \u003ctd\u003eWeb Server. Reverse Proxy. Load Balancer. Caching, Streaming etc.\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003e\u003cimg width=\"100px\" alt=\"puma\" src=\"Rails7StartKit/assets/images/puma.png\"\u003e\u003c/td\u003e\n    \u003ctd\u003e\u003cb\u003e\u003ca href=\"https://www.ruby-toolbox.com/categories/web_servers\"\u003ePuma\u003c/a\u003e\u003c/b\u003e\u003c/td\u003e\n    \u003ctd\u003eApplication Web Server. To launch Rails app\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003e\u003cimg width=\"100px\" alt=\"devise\" src=\"Rails7StartKit/assets/images/devise.png\"\u003e\u003c/td\u003e\n    \u003ctd\u003e\u003cb\u003e\u003ca href=\"https://www.ruby-toolbox.com/categories/rails_authentication\"\u003eDevise\u003c/b\u003e\u003c/a\u003e\u003c/td\u003e\n    \u003ctd\u003eAuthentication solution for Rails + Emails confirmations\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003e\u003cimg width=\"100px\" alt=\"ActiveStorage\" src=\"Rails7StartKit/assets/images/active-storage.png\"\u003e\u003c/td\u003e\n    \u003ctd\u003e\u003cb\u003e\u003ca href=\"https://github.com/rails/rails/tree/main/activestorage\"\u003eActiveStorage\u003c/b\u003e\u003c/a\u003e\u003c/td\u003e\n    \u003ctd\u003eDefault Cloud Storage Solution for Rails\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003e\u003cimg width=\"100px\" alt=\"faker\" src=\"Rails7StartKit/assets/images/faker.png\"\u003e\u003c/td\u003e\n    \u003ctd\u003e\u003cb\u003e\u003ca href=\"https://www.ruby-toolbox.com/categories/random_data_generation\"\u003eFaker\u003c/a\u003e\u003c/b\u003e\u003c/td\u003e\n    \u003ctd\u003eFake data for development and testing\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003e\u003cimg width=\"100px\" alt=\"kaminari\" src=\"Rails7StartKit/assets/images/kaminari.png\"\u003e\u003c/td\u003e\n    \u003ctd\u003e\u003cb\u003e\u003ca href=\"https://www.ruby-toolbox.com/categories/pagination\"\u003eKaminari\u003c/a\u003e\u003c/b\u003e\u003c/td\u003e\n    \u003ctd\u003ePagination solution\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003e\u003cimg width=\"100px\" alt=\"sanitize\" src=\"Rails7StartKit/assets/images/sanitize.png\"\u003e\u003c/td\u003e\n    \u003ctd\u003e\u003cb\u003e\u003ca href=\"https://www.ruby-toolbox.com/projects/sanitize\"\u003eSanitize\u003c/a\u003e\u003c/b\u003e\u003c/td\u003e\n    \u003ctd\u003eSanitization of a dangerous users' input\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003e\u003cimg width=\"100px\" alt=\"letter_opener\" src=\"Rails7StartKit/assets/images/mailcatcher.png\"\u003e\u003c/td\u003e\n    \u003ctd\u003e\u003cb\u003e\u003ca href=\"https://www.ruby-toolbox.com/categories/EMail_Fake_Servers\"\u003emailcatcher\u003c/a\u003e\u003c/b\u003e\u003c/td\u003e\n    \u003ctd\u003eEmail previewer for development\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd colspan=\"3\"\u003e\u003ch3\u003eCode Quality\u003c/h3\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003e\u003cimg width=\"100px\" alt=\"rspec\" src=\"Rails7StartKit/assets/images/rspec.png\"\u003e\u003c/td\u003e\n    \u003ctd\u003e\u003cb\u003e\u003ca href=\"https://www.ruby-toolbox.com/categories/testing_frameworks\"\u003eRSpec\u003c/a\u003e\u003c/b\u003e\u003c/td\u003e\n    \u003ctd\u003eTesting Framework for Rails\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003e\u003cimg width=\"100px\" alt=\"rspec\" src=\"Rails7StartKit/assets/images/rubocop.png\"\u003e\u003c/td\u003e\n    \u003ctd\u003e\u003cb\u003e\u003ca href=\"https://www.ruby-toolbox.com/categories/code_metrics\"\u003eRubocop\u003c/a\u003e\u003c/b\u003e\u003c/td\u003e\n    \u003ctd\u003eRuby static code analyzer (a.k.a. linter) and formatter.\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003e\u003cimg width=\"100px\" alt=\"breakman\" src=\"Rails7StartKit/assets/images/breakman.png\"\u003e\u003c/td\u003e\n    \u003ctd\u003e\u003cb\u003e\u003ca href=\"https://github.com/presidentbeef/brakeman\"\u003eBreakman\u003c/a\u003e\u003c/b\u003e\u003c/td\u003e\n    \u003ctd\u003eStatic analysis tool | Security Vulnerabilities.\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003e\u003cimg width=\"100px\" alt=\"rspec\" src=\"Rails7StartKit/assets/images/simple-cov.png\"\u003e\u003c/td\u003e\n    \u003ctd\u003e\u003cb\u003e\u003ca href=\"https://github.com/simplecov-ruby/simplecov\"\u003eSimpleCov\u003c/a\u003e\u003c/b\u003e\u003c/td\u003e\n    \u003ctd\u003eCode coverage for Ruby (and Rails)\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\nWhat I'm going to add...\n\n\u003ctable\u003e\n  \u003cthead\u003e\n    \u003ctr\u003e\n      \u003cth\u003eLogotype\u003c/th\u003e\n      \u003cth\u003eDescription\u003c/th\u003e\n      \u003cth\u003eWhy it was added\u003c/th\u003e\n    \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n  \u003ctr\u003e\n    \u003ctd\u003e\u003cimg width=\"100px\" alt=\"devise\" src=\"Rails7StartKit/assets/images/devise.png\"\u003e\u003c/td\u003e\n    \u003ctd\u003e\u003cb\u003e\u003ca href=\"https://www.ruby-toolbox.com/categories/rails_authentication\"\u003eDevise\u003c/b\u003e\u003c/a\u003e\u003c/td\u003e\n    \u003ctd\u003eLogin with Facebook and Google\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\n*All trademarks, logos and brand names are the property of their respective owners.*\n\n## Installation and Running\n\n\u003ci\u003eCopy \u0026 Paste in your terminal\u003c/i\u003e\n\n❤️ **Linux / MacOS**\n\n```sh\ngit clone https://github.com/the-teacher/rails7-startkit.git \u0026\u0026 \\\n  cd rails7-startkit \u0026\u0026 \\\n  ruby bin/setup\n```\n\n💙 **Windows**\n\n```sh\ngit clone https://github.com/the-teacher/rails7-startkit.git \u0026 cd rails7-startkit \u0026 ruby bin/setup\n```\n\nYou will see something like that:\n\n```js\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\nRails 7. StartKit\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\nWhat was done:\n1. Pull all required Images\n\n2. Launching ElasticSearch Container\n3. Launching Mailcatcher Container\n4. Launching PgSQL Container\n5. Launching Redis Container\n6. Launching Rails Container\n\n7. Correcting Permissions for Linux\n8. Installing Gems\n9. Turn off some ElasticSearch settings\n10. Prepare Database (Create, Migrate, Create Seeds)\n11. Indexing Article Model\n\n12. Quality: Rubocop\n13. Quality: RSpec with SimpleConv\n14. Quality: Breakman\n\n15. Yarn: Install Node Packages\n16. Yarn: Build JS/CSS Assets\n17. Precompile Assets\n\n18. Launching Sidekiq\n19. Launching Rails App with Puma\n\n20. Visit Rails App: http://localhost:3000\n21. Visit Mail Service: http://localhost:1080\n22. Visit ElasticSearch: http://localhost:9200\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\nWelcome to RAILS 7!\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n```\n\n## `bin/` commands\n\n❤️ :warning: `bin/exec` - Linux and MacOS users can skip using `ruby`\n\n💙 :warning: `ruby bin/exec` - Windows users should use `ruby` explicitly\n\nFrom the root of the project\n\n\u003ctable\u003e\n  \u003cthead\u003e\n    \u003ctr\u003e\n      \u003cth\u003eCommand\u003c/th\u003e\n      \u003cth\u003eDescription\u003c/th\u003e\n    \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n    \u003ctr\u003e\n      \u003ctd colspan=\"2\"\u003eMost important\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd\u003e\u003cb\u003eruby bin/setup\u003c/b\u003e\u003c/td\u003e\n      \u003ctd\u003eDownload images, run containers, initialize data, launch all processes.\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd\u003e\u003cb\u003eruby bin/open\u003c/b\u003e\u003c/td\u003e\n      \u003ctd\u003eGet in \u003cb\u003eRails\u003c/b\u003e Container\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd\u003e\u003cb\u003erubyc\u0026nbsp;bin/exec\u0026nbsp;[CMD]\u003c/b\u003e\u003c/td\u003e\n      \u003ctd\u003eExecute a command (\u003ci\u003e[CMD]\u003c/i\u003e) from \u003ccode\u003eRails7StartKit\u003c/code\u003e module\u003c/td\u003e\n    \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\n## `bin/open` command\n\n\u003ctable\u003e\n  \u003cthead\u003e\n    \u003ctr\u003e\n      \u003cth\u003eCommand\u003c/th\u003e\n      \u003cth\u003eDescription\u003c/th\u003e\n    \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n    \u003ctr\u003e\n      \u003ctd colspan=\"2\"\u003eGet in a container\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd\u003e\u003cb\u003eruby\u0026nbsp;bin/open\u0026nbsp;[NAME]\u003c/b\u003e\u003c/td\u003e\n      \u003ctd\u003e\n        Get in a Container. \u003ccode\u003e[NAME]\u003c/code\u003e\n        \u003cbr /\u003e\u003cbr /\u003e\n        \u003ci\u003e[NAME]\u003c/i\u003e Values: \u003ccode\u003erails\u003c/code\u003e,\u003ccode\u003epsql\u003c/code\u003e, \u003ccode\u003eredis\u003c/code\u003e, \u003ccode\u003eelastic\u003c/code\u003e, \u003ccode\u003emailcatcher\u003c/code\u003e.\n        \u003cbr /\u003e\u003cbr /\u003e\n        Default value is: \u003ccode\u003erails\u003c/code\u003e.\n      \u003c/td\u003e\n    \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\n## `bin/exec` command\n\n\u003cdetails\u003e\n  \u003csummary\u003eAll Possible Module Methods\u003c/summary\u003e\n\u003cbr\u003e\n\u003cul\u003e\n  \u003cli\u003ebreakman\u003c/li\u003e\n  \u003cli\u003ecache\u003c/li\u003e\n  \u003cli\u003echeck_docker!\u003c/li\u003e\n  \u003cli\u003echeck_docker_compose_v2!\u003c/li\u003e\n  \u003cli\u003echeck_docker_running!\u003c/li\u003e\n  \u003cli\u003echewy_index\u003c/li\u003e\n  \u003cli\u003echewy_reset\u003c/li\u003e\n  \u003cli\u003econtainer_bash_exec\u003c/li\u003e\n  \u003cli\u003econtainer_exec\u003c/li\u003e\n  \u003cli\u003econtainers_information\u003c/li\u003e\n  \u003cli\u003ecron_start\u003c/li\u003e\n  \u003cli\u003ecron_stop\u003c/li\u003e\n  \u003cli\u003edocker_compose\u003c/li\u003e\n  \u003cli\u003einit_nvm\u003c/li\u003e\n  \u003cli\u003elog_puma\u003c/li\u003e\n  \u003cli\u003elog_server\u003c/li\u003e\n  \u003cli\u003elog_sidekiq\u003c/li\u003e\n  \u003cli\u003eprint_methods\u003c/li\u003e\n  \u003cli\u003eprompt!\u003c/li\u003e\n  \u003cli\u003epuma_dev_start\u003c/li\u003e\n  \u003cli\u003epuma_restart\u003c/li\u003e\n  \u003cli\u003epuma_start\u003c/li\u003e\n  \u003cli\u003epuma_stop\u003c/li\u003e\n  \u003cli\u003erails7_header\u003c/li\u003e\n  \u003cli\u003erails7_ready\u003c/li\u003e\n  \u003cli\u003erails7_startkit_greetings!\u003c/li\u003e\n  \u003cli\u003erails_assets_precompile\u003c/li\u003e\n  \u003cli\u003erails_db_migrate\u003c/li\u003e\n  \u003cli\u003erails_db_prepare\u003c/li\u003e\n  \u003cli\u003erails_install_gems\u003c/li\u003e\n  \u003cli\u003ereset\u003c/li\u003e\n  \u003cli\u003erestart\u003c/li\u003e\n  \u003cli\u003erestart_all\u003c/li\u003e\n  \u003cli\u003erspec\u003c/li\u003e\n  \u003cli\u003erspec_with_cov\u003c/li\u003e\n  \u003cli\u003erubocop\u003c/li\u003e\n  \u003cli\u003erubocop_fix\u003c/li\u003e\n  \u003cli\u003esetup!\u003c/li\u003e\n  \u003cli\u003esidekiq_start\u003c/li\u003e\n  \u003cli\u003esidekiq_stop\u003c/li\u003e\n  \u003cli\u003estart\u003c/li\u003e\n  \u003cli\u003estart_all\u003c/li\u003e\n  \u003cli\u003estart_all_containers\u003c/li\u003e\n  \u003cli\u003estatus\u003c/li\u003e\n  \u003cli\u003estop\u003c/li\u003e\n  \u003cli\u003estop_all\u003c/li\u003e\n  \u003cli\u003estop_all_containers\u003c/li\u003e\n  \u003cli\u003esystem!\u003c/li\u003e\n  \u003cli\u003eturn_off_elastic_settings\u003c/li\u003e\n  \u003cli\u003ewhenever_show\u003c/li\u003e\n  \u003cli\u003ewhenever_start\u003c/li\u003e\n  \u003cli\u003ewhenever_stop\u003c/li\u003e\n  \u003cli\u003eyarn_build\u003c/li\u003e\n  \u003cli\u003eyarn_install\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\n\u003ctable\u003e\n  \u003cthead\u003e\n    \u003ctr\u003e\n      \u003cth\u003eCommand\u003c/th\u003e\n      \u003cth\u003eDescription\u003c/th\u003e\n    \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n    \u003ctr\u003e\n      \u003ctd colspan=\"2\"\u003e\u003ch3\u003e:arrow_right: Execute\u003c/h3\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd\u003e\u003cb\u003eruby bin/exec\u0026nbsp;[CMD]\u003c/b\u003e\u003c/td\u003e\n      \u003ctd\u003eExecute a command (\u003ci\u003e[CMD]\u003c/i\u003e) from \u003ccode\u003eRails7StartKit\u003c/code\u003e module\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd colspan=\"2\"\u003e\u003ch3\u003e:arrow_right: Start/Stop/Restart\u003c/h3\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd\u003e\u003cb\u003eruby bin/exec start\u003c/b\u003e\u003c/td\u003e\n      \u003ctd\u003eStart processes in \u003cb\u003erails\u003c/b\u003e container\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd\u003e\u003cb\u003eruby bin/exec stop\u003c/b\u003e\u003c/td\u003e\n      \u003ctd\u003eStop processes in \u003cb\u003erails\u003c/b\u003e container\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd\u003e\u003cb\u003eruby bin/exec restart\u003c/b\u003e\u003c/td\u003e\n      \u003ctd\u003e\u003ccode\u003ebin/exec\u0026nbsp;stop\u003c/code\u003e + \u003ccode\u003ebin/exec\u0026nbsp;start\u003c/code\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd\u003e\u003cb\u003eruby bin/exec\u0026nbsp;start_all\u003c/b\u003e\u003c/td\u003e\n      \u003ctd\u003eStart processes and containers\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd\u003e\u003cb\u003eruby bin/exec\u0026nbsp;stop_all\u003c/b\u003e\u003c/td\u003e\n      \u003ctd\u003eStop processes and containers\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd\u003e\u003cb\u003eruby bin/exec restart_all\u003c/b\u003e\u003c/td\u003e\n      \u003ctd\u003e\u003ccode\u003ebin/exec\u0026nbsp;stop_all\u003c/code\u003e + \u003ccode\u003ebin/exec\u0026nbsp;start_all\u003c/code\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd colspan=\"2\"\u003e\u003ch3\u003e:arrow_right: Helpers\u003ch3\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd\u003e\u003cb\u003eruby bin/exec status\u003c/b\u003e\u003c/td\u003e\n      \u003ctd\u003eTo see running containers and launched services\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd\u003e\u003cb\u003eruby bin/exec cache\u003c/b\u003e\u003c/td\u003e\n      \u003ctd\u003eToggle caching in development and restart web server\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd\u003e\u003cb\u003eruby bin/exec index\u003c/b\u003e\u003c/td\u003e\n      \u003ctd\u003eRun Search engines indexation\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd\u003e\u003cb\u003eruby bin/exec reset\u003c/b\u003e\u003c/td\u003e\n      \u003ctd\u003eReset data of services in \u003cb\u003e./db\u003c/b\u003e folder\u003c/td\u003e\n    \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\n### Prerequisites\n\nOn your host you have:\n\n- **Any version** of Ruby\n- **Any version** of Git\n- **Any version** of Docker\n\n### Conventions and Agreements\n\n\u003cdetails\u003e\n  \u003csummary\u003eShow details\u003c/summary\u003e\n\u003cbr\u003e\n\nFor \u003cb\u003edemonstration\u003c/b\u003e, education and maintainance purposes I use a bit unsusual approach to name some files.\n\nI `_UNDERSCORE` and `UPPERCASE` some files and folders \u003cb\u003eto move them on the top of a folder\u003c/b\u003e and to make them more visible and to highlight their importance.\n\n**Data**\n\n- All services' data related folders are placed in `./db`\n- All folders are `UPPERCASED`\n\n```\n./db\n├── ELASTIC\n├── PGSQL\n└── REDIS\n```\n\n**Configuration Files**\n\n- All services' configurations are placed in `./config`\n- All configs are `_UNDERSCORED` and `UPPERCASED`\n\n```\n./config\n├── _CONFIG.yml\n├── _PUMA.rb\n└── _SIDEKIQ.yml\n```\n\n**Initialazers**\n\n- All services' initializers are placed in `./config/initializers`\n- All files are `_UNDERSCORED` and `UPPERCASED`\n\n```\n./config/initializers/\n├── _CHEWY.rb\n├── _CONFIG.rb\n├── _REDIS.rb\n└── _SIDEKIQ.rb\n```\n\u003c/details\u003e\n\n### Rails user\n\n\u003cdetails\u003e\n  \u003csummary\u003eShow Details\u003c/summary\u003e\n\nAs a user to own files and run Rails inside a container I use\n\n`user:group` =\u003e `lucky:lucky` =\u003e `7777:7777`\n\nIf you would like to run the project on a linux environment then:\n\n- create group `lucky (7777)` and user `lucky (7777)`\n- run the project with `RUN_AS=7777:7777` option\n\u003c/details\u003e\n\n### Questions and Answers\n\n\u003cdetails\u003e\n  \u003csummary\u003eWhat is an idea of this project?\u003c/summary\u003e\n  \u003cbr\u003e\n  \u003cp\u003eFor many years Rails gives you freedom to choose development tools. Different databases, different paginators, different search engines, different delayed job solutions.\u003c/p\u003e\n  \u003cp\u003eIt is great. But all the time you need to choose something and install it from scratch.\u003c/p\u003e\n  \u003cp\u003eI think I did my choice about many solutions and tools.\u003c/p\u003e\n  \u003cp\u003eI want to install my minimal pack of tools now and reuse my StartKit every time when I start a new project.\u003c/p\u003e\n  \u003cp\u003eWith Docker I can roll out my minimal application with all required preinstalled tools in minutes, not in hours or in days.\u003c/p\u003e\n\u003c/details\u003e\n\n\u003cdetails\u003e\n  \u003csummary\u003eWhy did you create this project?\u003c/summary\u003e\n  \u003cbr\u003e\n  \u003cp\u003e\n    I didn't work with Rails last 4 or 5 years. I wanted to learn new approaches and techniques. I found that there is still no a simple way to setup a blank app with most popular tools.\n  \u003c/p\u003e\n  \u003cp\u003eSo. Why not to make my own playground?\u003c/p\u003e\n\u003c/details\u003e\n\n\u003cdetails\u003e\n  \u003csummary\u003eHow do you choose technologies for the StartKit?\u003c/summary\u003e\n  \u003cbr\u003e\n  \u003cp\u003eI use tools that I like or want to learn.\u003c/p\u003e\n  \u003cp\u003eI use tools that I think are the most popular ones.\u003c/p\u003e\n\u003c/details\u003e\n\n\u003cdetails\u003e\n  \u003csummary\u003eIt looks good for development. What about production?\u003c/summary\u003e\n  \u003cbr\u003e\n  \u003cp\u003eI'm not a DevOps, but I have a vision how to deploy this code to production.\u003c/p\u003e\n  \u003cp\u003eRight now it is not described somehow. It is in my plans.\u003c/p\u003e\n\u003c/details\u003e\n\n### TODO\n\n\u003cdetails\u003e\n  \u003csummary\u003eShow details\u003c/summary\u003e\n\n- Nginx\n- Production roll up\n- Action Cable [Link](https://guides.rubyonrails.org/action_cable_overview.html)\n\u003c/details\u003e\n\n## Sponsorship\n\nThese amazing companies and teams support the project:\n\n\u003ctable width=\"100%\"\u003e\n  \u003cthead\u003e\n    \u003ctr\u003e\n      \u003cth\u003eJetBrains.com\u003c/th\u003e\n      \u003cth\u003eHoodies.team\u003c/th\u003e\n    \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n    \u003ctr\u003e\n      \u003ctd\u003e\u003cimg width=\"200px\" src=\"./Rails7StartKit/assets/logos/JB-logo.png\" /\u003e\u003c/td\u003e\n      \u003ctd\u003e\u003cimg width=\"200px\" src=\"./Rails7StartKit/assets/logos/Hoodies-logo.svg\" /\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\n\n# License\n\n[MIT License. 2023. Ilya N. Zykin](./LICENSE.md)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthe-teacher%2Frails7-startkit","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fthe-teacher%2Frails7-startkit","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthe-teacher%2Frails7-startkit/lists"}