{"id":530,"name":null,"description":"Dualboot your Ruby app made easy","url":"https://github.com/shopify/bootboot","last_synced_at":"2026-10-06T06:30:31.948Z","repository":{"id":33864732,"uuid":"157651245","full_name":"Shopify/bootboot","owner":"Shopify","description":"Dualboot your Ruby app made easy","archived":false,"fork":false,"pushed_at":"2025-12-13T04:01:08.000Z","size":110,"stargazers_count":447,"open_issues_count":14,"forks_count":37,"subscribers_count":318,"default_branch":"main","last_synced_at":"2026-10-05T13:28:07.056Z","etag":null,"topics":["boot","dependencies","tooling"],"latest_commit_sha":null,"homepage":"","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/Shopify.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2018-11-15T04:17:29.000Z","updated_at":"2026-10-02T14:52:03.000Z","dependencies_parsed_at":"2026-01-11T20:00:39.069Z","dependency_job_id":null,"html_url":"https://github.com/Shopify/bootboot","commit_stats":{"total_commits":72,"total_committers":21,"mean_commits":"3.4285714285714284","dds":0.6388888888888888,"last_synced_commit":"2ee386b19ca76d40cd31bcb534d9ed24637872e8"},"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/Shopify/bootboot","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Shopify%2Fbootboot","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Shopify%2Fbootboot/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Shopify%2Fbootboot/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Shopify%2Fbootboot/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Shopify","download_url":"https://codeload.github.com/Shopify/bootboot/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Shopify%2Fbootboot/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":343170754,"owners_count":38042348,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-10-03T21:59:58.778Z","status":"online","status_checked_at":"2026-10-05T02:00:06.766Z","response_time":83,"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"}},"owner":{"login":"Shopify","name":"Shopify","uuid":"8085","kind":"organization","description":"","email":"engineering@shopify.engineering","website":"https://shopify.engineering/","location":"The Internet","twitter":"ShopifyEng","company":null,"icon_url":"https://avatars.githubusercontent.com/u/8085?v=4","repositories_count":1036,"last_synced_at":"2026-10-05T21:49:33.596Z","metadata":{"has_sponsors_listing":false,"funding":null},"html_url":"https://github.com/Shopify","funding_links":[],"total_stars":151261,"followers":8667,"following":0,"created_at":"2022-11-02T16:20:36.277Z","updated_at":"2026-10-05T21:49:33.724Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Shopify","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Shopify/repositories"},"packages":[{"id":12192950,"name":"bootboot","ecosystem":"rubygems","description":" This gem remove the overhead of monkeypatching your Gemfile in order to dualboot your app using the Gemfile_next lock strategy It also ensure that dependencies in the Gemfile lock and Gemfile_next lock are in sync whenever someone updates a gem ","homepage":"https://github.com/shopify/bootboot","licenses":"MIT","normalized_licenses":["MIT"],"repository_url":"https://github.com/shopify/bootboot","keywords_array":[],"namespace":null,"versions_count":5,"first_release_published_at":"2018-11-20T20:33:48.443Z","latest_release_published_at":"2023-01-25T16:49:03.949Z","latest_release_number":"0.2.2","last_synced_at":"2026-10-05T06:00:42.159Z","created_at":"2025-10-07T01:48:04.391Z","updated_at":"2026-10-05T23:55:36.442Z","registry_url":"https://gem.coop/gems/bootboot","install_command":"gem install bootboot -s https://gem.coop","documentation_url":"http://www.rubydoc.info/gems/bootboot/","metadata":{"funding":null},"repo_metadata":{"id":33864732,"uuid":"157651245","full_name":"Shopify/bootboot","owner":"Shopify","description":"Dualboot your Ruby app made easy","archived":false,"fork":false,"pushed_at":"2025-12-13T04:01:08.000Z","size":110,"stargazers_count":447,"open_issues_count":14,"forks_count":37,"subscribers_count":318,"default_branch":"main","last_synced_at":"2026-10-05T13:28:07.056Z","etag":null,"topics":["boot","dependencies","tooling"],"latest_commit_sha":null,"homepage":"","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/Shopify.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2018-11-15T04:17:29.000Z","updated_at":"2026-10-02T14:52:03.000Z","dependencies_parsed_at":"2026-01-11T20:00:39.069Z","dependency_job_id":null,"html_url":"https://github.com/Shopify/bootboot","commit_stats":{"total_commits":72,"total_committers":21,"mean_commits":"3.4285714285714284","dds":0.6388888888888888,"last_synced_commit":"2ee386b19ca76d40cd31bcb534d9ed24637872e8"},"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/Shopify/bootboot","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Shopify%2Fbootboot","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Shopify%2Fbootboot/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Shopify%2Fbootboot/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Shopify%2Fbootboot/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Shopify","download_url":"https://codeload.github.com/Shopify/bootboot/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Shopify%2Fbootboot/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":343170754,"owners_count":38042348,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-10-03T21:59:58.778Z","status":"online","status_checked_at":"2026-10-05T02:00:06.766Z","response_time":83,"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"},"owner_record":{"login":"Shopify","name":"Shopify","uuid":"8085","kind":"organization","description":"","email":"engineering@shopify.engineering","website":"https://shopify.engineering/","location":"The Internet","twitter":"ShopifyEng","company":null,"icon_url":"https://avatars.githubusercontent.com/u/8085?v=4","repositories_count":1036,"last_synced_at":"2026-10-05T21:49:33.596Z","metadata":{"has_sponsors_listing":false,"funding":null},"html_url":"https://github.com/Shopify","funding_links":[],"total_stars":151261,"followers":8667,"following":0,"created_at":"2022-11-02T16:20:36.277Z","updated_at":"2026-10-05T21:49:33.724Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Shopify","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Shopify/repositories"},"tags":[{"name":"v0.2.2","sha":"4714ea18824714121a9f67ace9fd7567a8ea0ca0","kind":"tag","published_at":"2023-01-25T16:49:01.000Z","download_url":"https://codeload.github.com/Shopify/bootboot/tar.gz/v0.2.2","html_url":"https://github.com/Shopify/bootboot/releases/tag/v0.2.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/Shopify/bootboot@v0.2.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Shopify%2Fbootboot/tags/v0.2.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Shopify%2Fbootboot/tags/v0.2.2/manifests"},{"name":"v0.2.1","sha":"e6de9ef9c4cc1eac1eacc364541b587806760b69","kind":"tag","published_at":"2022-04-21T21:37:13.000Z","download_url":"https://codeload.github.com/Shopify/bootboot/tar.gz/v0.2.1","html_url":"https://github.com/Shopify/bootboot/releases/tag/v0.2.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/Shopify/bootboot@v0.2.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Shopify%2Fbootboot/tags/v0.2.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Shopify%2Fbootboot/tags/v0.2.1/manifests"},{"name":"v0.2.0","sha":"d24d35a7a95f4dbf87675e197facced650b97835","kind":"commit","published_at":"2020-09-14T13:03:39.000Z","download_url":"https://codeload.github.com/Shopify/bootboot/tar.gz/v0.2.0","html_url":"https://github.com/Shopify/bootboot/releases/tag/v0.2.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/Shopify/bootboot@v0.2.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Shopify%2Fbootboot/tags/v0.2.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Shopify%2Fbootboot/tags/v0.2.0/manifests"},{"name":"v0.1.2","sha":"19620fa62ab6966bd8a9caa8a431d91628abc6ca","kind":"commit","published_at":"2019-01-08T00:10:11.000Z","download_url":"https://codeload.github.com/Shopify/bootboot/tar.gz/v0.1.2","html_url":"https://github.com/Shopify/bootboot/releases/tag/v0.1.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/Shopify/bootboot@v0.1.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Shopify%2Fbootboot/tags/v0.1.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Shopify%2Fbootboot/tags/v0.1.2/manifests"},{"name":"v0.1.1","sha":"754c6c3014f4c025c9349a711c2842c9f652fb54","kind":"tag","published_at":"2018-11-20T20:33:43.000Z","download_url":"https://codeload.github.com/Shopify/bootboot/tar.gz/v0.1.1","html_url":"https://github.com/Shopify/bootboot/releases/tag/v0.1.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/Shopify/bootboot@v0.1.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Shopify%2Fbootboot/tags/v0.1.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Shopify%2Fbootboot/tags/v0.1.1/manifests"}]},"repo_metadata_updated_at":"2026-10-05T23:55:36.442Z","dependent_packages_count":0,"downloads":139730678,"downloads_period":"total","dependent_repos_count":0,"rankings":{"downloads":0.20654454224971344,"dependent_repos_count":0.0,"dependent_packages_count":0.0,"stargazers_count":null,"forks_count":null,"docker_downloads_count":null,"average":0.06884818074990448},"purl":"pkg:gem/bootboot?repository_url=https://gem.coop","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/rubygems/bootboot","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/rubygems/bootboot","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/rubygems/bootboot/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":{"last_synced_at":"2026-10-05T06:00:39.564Z","issues_count":21,"pull_requests_count":56,"avg_time_to_close_issue":8244912.5,"avg_time_to_close_pull_request":3069082.618181818,"issues_closed_count":8,"pull_requests_closed_count":55,"pull_request_authors_count":21,"issue_authors_count":17,"avg_comments_per_issue":1.7619047619047619,"avg_comments_per_pull_request":0.6428571428571429,"merged_pull_requests_count":51,"bot_issues_count":0,"bot_pull_requests_count":11,"past_year_issues_count":1,"past_year_pull_requests_count":1,"past_year_avg_time_to_close_issue":null,"past_year_avg_time_to_close_pull_request":119428.0,"past_year_issues_closed_count":0,"past_year_pull_requests_closed_count":1,"past_year_pull_request_authors_count":1,"past_year_issue_authors_count":1,"past_year_avg_comments_per_issue":1.0,"past_year_avg_comments_per_pull_request":2.0,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":1,"issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/Shopify%2Fbootboot/issues","maintainers":[{"login":"gmcgibbon","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/gmcgibbon"},{"login":"eileencodes","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/eileencodes"}],"active_maintainers":[]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/packages/bootboot/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/packages/bootboot/version_numbers","latest_version_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/packages/bootboot/latest_version","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/packages/bootboot/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/packages/bootboot/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/packages/bootboot/codemeta","maintainers":[{"uuid":"78226","login":"shopify","name":null,"email":null,"url":null,"packages_count":356,"html_url":"https://gem.coop/profiles/shopify","role":null,"created_at":"2025-10-07T12:59:06.130Z","updated_at":"2025-10-07T12:59:06.130Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/maintainers/shopify/packages"}],"registry":{"name":"gem.coop","url":"https://gem.coop","ecosystem":"rubygems","default":false,"packages_count":197335,"maintainers_count":69308,"namespaces_count":0,"keywords_count":20131,"github":"gem-coop","metadata":{"funded_packages_count":8398},"icon_url":"https://github.com/gem-coop.png","created_at":"2025-10-06T17:24:20.932Z","updated_at":"2026-10-06T05:05:01.757Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/namespaces"}},{"id":15136727,"name":"github.com/Shopify/bootboot","ecosystem":"go","description":null,"homepage":null,"licenses":"mit","normalized_licenses":["MIT"],"repository_url":"https://github.com/Shopify/bootboot","keywords_array":[],"namespace":null,"versions_count":5,"first_release_published_at":"2018-11-20T20:33:17.000Z","latest_release_published_at":"2023-01-25T16:48:19.000Z","latest_release_number":"v0.2.2","last_synced_at":"2026-10-05T06:00:54.585Z","created_at":"2026-09-08T22:18:06.597Z","updated_at":"2026-10-05T23:55:36.440Z","registry_url":"https://pkg.go.dev/github.com/Shopify/bootboot","install_command":"go get github.com/Shopify/bootboot","documentation_url":"https://pkg.go.dev/github.com/Shopify/bootboot#section-documentation","metadata":{},"repo_metadata":{"id":33864732,"uuid":"157651245","full_name":"Shopify/bootboot","owner":"Shopify","description":"Dualboot your Ruby app made easy","archived":false,"fork":false,"pushed_at":"2025-12-13T04:01:08.000Z","size":110,"stargazers_count":447,"open_issues_count":14,"forks_count":37,"subscribers_count":318,"default_branch":"main","last_synced_at":"2026-10-05T13:28:07.056Z","etag":null,"topics":["boot","dependencies","tooling"],"latest_commit_sha":null,"homepage":"","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/Shopify.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2018-11-15T04:17:29.000Z","updated_at":"2026-10-02T14:52:03.000Z","dependencies_parsed_at":"2026-01-11T20:00:39.069Z","dependency_job_id":null,"html_url":"https://github.com/Shopify/bootboot","commit_stats":{"total_commits":72,"total_committers":21,"mean_commits":"3.4285714285714284","dds":0.6388888888888888,"last_synced_commit":"2ee386b19ca76d40cd31bcb534d9ed24637872e8"},"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/Shopify/bootboot","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Shopify%2Fbootboot","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Shopify%2Fbootboot/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Shopify%2Fbootboot/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Shopify%2Fbootboot/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Shopify","download_url":"https://codeload.github.com/Shopify/bootboot/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Shopify%2Fbootboot/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":343170754,"owners_count":38052568,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-10-03T21:59:58.778Z","status":"online","status_checked_at":"2026-10-05T02:00:06.766Z","response_time":83,"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"},"owner_record":{"login":"Shopify","name":"Shopify","uuid":"8085","kind":"organization","description":"","email":"engineering@shopify.engineering","website":"https://shopify.engineering/","location":"The Internet","twitter":"ShopifyEng","company":null,"icon_url":"https://avatars.githubusercontent.com/u/8085?v=4","repositories_count":1036,"last_synced_at":"2026-10-05T21:49:33.596Z","metadata":{"has_sponsors_listing":false,"funding":null},"html_url":"https://github.com/Shopify","funding_links":[],"total_stars":151261,"followers":8667,"following":0,"created_at":"2022-11-02T16:20:36.277Z","updated_at":"2026-10-05T21:49:33.724Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Shopify","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Shopify/repositories"},"tags":[{"name":"v0.2.2","sha":"4714ea18824714121a9f67ace9fd7567a8ea0ca0","kind":"tag","published_at":"2023-01-25T16:49:01.000Z","download_url":"https://codeload.github.com/Shopify/bootboot/tar.gz/v0.2.2","html_url":"https://github.com/Shopify/bootboot/releases/tag/v0.2.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/Shopify/bootboot@v0.2.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Shopify%2Fbootboot/tags/v0.2.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Shopify%2Fbootboot/tags/v0.2.2/manifests"},{"name":"v0.2.1","sha":"e6de9ef9c4cc1eac1eacc364541b587806760b69","kind":"tag","published_at":"2022-04-21T21:37:13.000Z","download_url":"https://codeload.github.com/Shopify/bootboot/tar.gz/v0.2.1","html_url":"https://github.com/Shopify/bootboot/releases/tag/v0.2.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/Shopify/bootboot@v0.2.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Shopify%2Fbootboot/tags/v0.2.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Shopify%2Fbootboot/tags/v0.2.1/manifests"},{"name":"v0.2.0","sha":"d24d35a7a95f4dbf87675e197facced650b97835","kind":"commit","published_at":"2020-09-14T13:03:39.000Z","download_url":"https://codeload.github.com/Shopify/bootboot/tar.gz/v0.2.0","html_url":"https://github.com/Shopify/bootboot/releases/tag/v0.2.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/Shopify/bootboot@v0.2.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Shopify%2Fbootboot/tags/v0.2.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Shopify%2Fbootboot/tags/v0.2.0/manifests"},{"name":"v0.1.2","sha":"19620fa62ab6966bd8a9caa8a431d91628abc6ca","kind":"commit","published_at":"2019-01-08T00:10:11.000Z","download_url":"https://codeload.github.com/Shopify/bootboot/tar.gz/v0.1.2","html_url":"https://github.com/Shopify/bootboot/releases/tag/v0.1.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/Shopify/bootboot@v0.1.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Shopify%2Fbootboot/tags/v0.1.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Shopify%2Fbootboot/tags/v0.1.2/manifests"},{"name":"v0.1.1","sha":"754c6c3014f4c025c9349a711c2842c9f652fb54","kind":"tag","published_at":"2018-11-20T20:33:43.000Z","download_url":"https://codeload.github.com/Shopify/bootboot/tar.gz/v0.1.1","html_url":"https://github.com/Shopify/bootboot/releases/tag/v0.1.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/Shopify/bootboot@v0.1.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Shopify%2Fbootboot/tags/v0.1.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Shopify%2Fbootboot/tags/v0.1.1/manifests"}]},"repo_metadata_updated_at":"2026-10-05T23:55:36.440Z","dependent_packages_count":0,"downloads":null,"downloads_period":null,"dependent_repos_count":0,"rankings":{"downloads":null,"dependent_repos_count":4.718583725988072,"dependent_packages_count":4.421204273213441,"stargazers_count":null,"forks_count":null,"docker_downloads_count":null,"average":4.569893999600756},"purl":"pkg:golang/github.com/Shopify/bootboot","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/go/github.com/Shopify/bootboot","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/go/github.com/Shopify/bootboot","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/go/github.com/Shopify/bootboot/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":{"last_synced_at":"2026-10-05T06:00:39.564Z","issues_count":21,"pull_requests_count":56,"avg_time_to_close_issue":8244912.5,"avg_time_to_close_pull_request":3069082.618181818,"issues_closed_count":8,"pull_requests_closed_count":55,"pull_request_authors_count":21,"issue_authors_count":17,"avg_comments_per_issue":1.7619047619047619,"avg_comments_per_pull_request":0.6428571428571429,"merged_pull_requests_count":51,"bot_issues_count":0,"bot_pull_requests_count":11,"past_year_issues_count":1,"past_year_pull_requests_count":1,"past_year_avg_time_to_close_issue":null,"past_year_avg_time_to_close_pull_request":119428.0,"past_year_issues_closed_count":0,"past_year_pull_requests_closed_count":1,"past_year_pull_request_authors_count":1,"past_year_issue_authors_count":1,"past_year_avg_comments_per_issue":1.0,"past_year_avg_comments_per_pull_request":2.0,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":1,"issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/Shopify%2Fbootboot/issues","maintainers":[{"login":"gmcgibbon","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/gmcgibbon"},{"login":"eileencodes","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/eileencodes"}],"active_maintainers":[]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2FShopify%2Fbootboot/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2FShopify%2Fbootboot/version_numbers","latest_version_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2FShopify%2Fbootboot/latest_version","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2FShopify%2Fbootboot/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2FShopify%2Fbootboot/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2FShopify%2Fbootboot/codemeta","maintainers":[],"registry":{"name":"proxy.golang.org","url":"https://proxy.golang.org","ecosystem":"go","default":true,"packages_count":2539831,"maintainers_count":0,"namespaces_count":852933,"keywords_count":138913,"github":"golang","metadata":{"funded_packages_count":113908,"sync_missing_packages_cursor":{"timestamp":"2026-09-29T00:04:57.155362Z","path":"github.com/virtengine/virtengine/sdk/specs","version":"v0.0.0-20260928231908-c0c887541540"},"rate_limit":5},"icon_url":"https://github.com/golang.png","created_at":"2022-04-04T15:19:22.939Z","updated_at":"2026-10-06T05:04:06.103Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/namespaces"}},{"id":15337217,"name":"github.com/shopify/bootboot","ecosystem":"go","description":null,"homepage":null,"licenses":"mit","normalized_licenses":["MIT"],"repository_url":"https://github.com/shopify/bootboot","keywords_array":[],"namespace":null,"versions_count":5,"first_release_published_at":"2018-11-20T20:33:17.000Z","latest_release_published_at":"2023-01-25T16:48:19.000Z","latest_release_number":"v0.2.2","last_synced_at":"2026-10-05T06:00:43.708Z","created_at":"2026-09-22T19:55:35.016Z","updated_at":"2026-10-05T23:55:36.443Z","registry_url":"https://pkg.go.dev/github.com/shopify/bootboot","install_command":"go get github.com/shopify/bootboot","documentation_url":"https://pkg.go.dev/github.com/shopify/bootboot#section-documentation","metadata":{},"repo_metadata":{"id":33864732,"uuid":"157651245","full_name":"Shopify/bootboot","owner":"Shopify","description":"Dualboot your Ruby app made easy","archived":false,"fork":false,"pushed_at":"2025-12-13T04:01:08.000Z","size":110,"stargazers_count":447,"open_issues_count":14,"forks_count":37,"subscribers_count":318,"default_branch":"main","last_synced_at":"2026-10-05T13:28:07.056Z","etag":null,"topics":["boot","dependencies","tooling"],"latest_commit_sha":null,"homepage":"","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/Shopify.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2018-11-15T04:17:29.000Z","updated_at":"2026-10-02T14:52:03.000Z","dependencies_parsed_at":"2026-01-11T20:00:39.069Z","dependency_job_id":null,"html_url":"https://github.com/Shopify/bootboot","commit_stats":{"total_commits":72,"total_committers":21,"mean_commits":"3.4285714285714284","dds":0.6388888888888888,"last_synced_commit":"2ee386b19ca76d40cd31bcb534d9ed24637872e8"},"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/Shopify/bootboot","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Shopify%2Fbootboot","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Shopify%2Fbootboot/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Shopify%2Fbootboot/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Shopify%2Fbootboot/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Shopify","download_url":"https://codeload.github.com/Shopify/bootboot/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Shopify%2Fbootboot/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":343170754,"owners_count":38042348,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-10-03T21:59:58.778Z","status":"online","status_checked_at":"2026-10-05T02:00:06.766Z","response_time":83,"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"},"owner_record":{"login":"Shopify","name":"Shopify","uuid":"8085","kind":"organization","description":"","email":"engineering@shopify.engineering","website":"https://shopify.engineering/","location":"The Internet","twitter":"ShopifyEng","company":null,"icon_url":"https://avatars.githubusercontent.com/u/8085?v=4","repositories_count":1036,"last_synced_at":"2026-10-05T21:49:33.596Z","metadata":{"has_sponsors_listing":false,"funding":null},"html_url":"https://github.com/Shopify","funding_links":[],"total_stars":151261,"followers":8667,"following":0,"created_at":"2022-11-02T16:20:36.277Z","updated_at":"2026-10-05T21:49:33.724Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Shopify","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Shopify/repositories"},"tags":[{"name":"v0.2.2","sha":"4714ea18824714121a9f67ace9fd7567a8ea0ca0","kind":"tag","published_at":"2023-01-25T16:49:01.000Z","download_url":"https://codeload.github.com/Shopify/bootboot/tar.gz/v0.2.2","html_url":"https://github.com/Shopify/bootboot/releases/tag/v0.2.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/Shopify/bootboot@v0.2.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Shopify%2Fbootboot/tags/v0.2.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Shopify%2Fbootboot/tags/v0.2.2/manifests"},{"name":"v0.2.1","sha":"e6de9ef9c4cc1eac1eacc364541b587806760b69","kind":"tag","published_at":"2022-04-21T21:37:13.000Z","download_url":"https://codeload.github.com/Shopify/bootboot/tar.gz/v0.2.1","html_url":"https://github.com/Shopify/bootboot/releases/tag/v0.2.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/Shopify/bootboot@v0.2.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Shopify%2Fbootboot/tags/v0.2.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Shopify%2Fbootboot/tags/v0.2.1/manifests"},{"name":"v0.2.0","sha":"d24d35a7a95f4dbf87675e197facced650b97835","kind":"commit","published_at":"2020-09-14T13:03:39.000Z","download_url":"https://codeload.github.com/Shopify/bootboot/tar.gz/v0.2.0","html_url":"https://github.com/Shopify/bootboot/releases/tag/v0.2.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/Shopify/bootboot@v0.2.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Shopify%2Fbootboot/tags/v0.2.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Shopify%2Fbootboot/tags/v0.2.0/manifests"},{"name":"v0.1.2","sha":"19620fa62ab6966bd8a9caa8a431d91628abc6ca","kind":"commit","published_at":"2019-01-08T00:10:11.000Z","download_url":"https://codeload.github.com/Shopify/bootboot/tar.gz/v0.1.2","html_url":"https://github.com/Shopify/bootboot/releases/tag/v0.1.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/Shopify/bootboot@v0.1.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Shopify%2Fbootboot/tags/v0.1.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Shopify%2Fbootboot/tags/v0.1.2/manifests"},{"name":"v0.1.1","sha":"754c6c3014f4c025c9349a711c2842c9f652fb54","kind":"tag","published_at":"2018-11-20T20:33:43.000Z","download_url":"https://codeload.github.com/Shopify/bootboot/tar.gz/v0.1.1","html_url":"https://github.com/Shopify/bootboot/releases/tag/v0.1.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/Shopify/bootboot@v0.1.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Shopify%2Fbootboot/tags/v0.1.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Shopify%2Fbootboot/tags/v0.1.1/manifests"}]},"repo_metadata_updated_at":"2026-10-05T23:55:36.442Z","dependent_packages_count":0,"downloads":null,"downloads_period":null,"dependent_repos_count":0,"rankings":{"downloads":null,"dependent_repos_count":4.553458697393864,"dependent_packages_count":4.262475933204417,"stargazers_count":null,"forks_count":null,"docker_downloads_count":null,"average":4.407967315299141},"purl":"pkg:golang/github.com/shopify/bootboot","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/go/github.com/shopify/bootboot","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/go/github.com/shopify/bootboot","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/go/github.com/shopify/bootboot/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":{"last_synced_at":"2026-10-05T06:00:39.564Z","issues_count":21,"pull_requests_count":56,"avg_time_to_close_issue":8244912.5,"avg_time_to_close_pull_request":3069082.618181818,"issues_closed_count":8,"pull_requests_closed_count":55,"pull_request_authors_count":21,"issue_authors_count":17,"avg_comments_per_issue":1.7619047619047619,"avg_comments_per_pull_request":0.6428571428571429,"merged_pull_requests_count":51,"bot_issues_count":0,"bot_pull_requests_count":11,"past_year_issues_count":1,"past_year_pull_requests_count":1,"past_year_avg_time_to_close_issue":null,"past_year_avg_time_to_close_pull_request":119428.0,"past_year_issues_closed_count":0,"past_year_pull_requests_closed_count":1,"past_year_pull_request_authors_count":1,"past_year_issue_authors_count":1,"past_year_avg_comments_per_issue":1.0,"past_year_avg_comments_per_pull_request":2.0,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":1,"issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/Shopify%2Fbootboot/issues","maintainers":[{"login":"gmcgibbon","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/gmcgibbon"},{"login":"eileencodes","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/eileencodes"}],"active_maintainers":[]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fshopify%2Fbootboot/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fshopify%2Fbootboot/version_numbers","latest_version_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fshopify%2Fbootboot/latest_version","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fshopify%2Fbootboot/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fshopify%2Fbootboot/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fshopify%2Fbootboot/codemeta","maintainers":[],"registry":{"name":"proxy.golang.org","url":"https://proxy.golang.org","ecosystem":"go","default":true,"packages_count":2539831,"maintainers_count":0,"namespaces_count":852933,"keywords_count":138913,"github":"golang","metadata":{"funded_packages_count":113908,"sync_missing_packages_cursor":{"timestamp":"2026-09-29T00:04:57.155362Z","path":"github.com/virtengine/virtengine/sdk/specs","version":"v0.0.0-20260928231908-c0c887541540"},"rate_limit":5},"icon_url":"https://github.com/golang.png","created_at":"2022-04-04T15:19:22.939Z","updated_at":"2026-10-06T05:04:06.103Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/namespaces"}},{"id":167048,"name":"bootboot","ecosystem":"rubygems","description":" This gem remove the overhead of monkeypatching your Gemfile in order to dualboot your app using the Gemfile_next lock strategy It also ensure that dependencies in the Gemfile lock and Gemfile_next lock are in sync whenever someone updates a gem ","homepage":"https://github.com/shopify/bootboot","licenses":"MIT","normalized_licenses":["MIT"],"repository_url":"https://github.com/shopify/bootboot","keywords_array":[],"namespace":null,"versions_count":5,"first_release_published_at":"2018-11-20T20:33:48.443Z","latest_release_published_at":"2023-01-25T16:49:03.949Z","latest_release_number":"0.2.2","last_synced_at":"2026-10-05T06:00:42.154Z","created_at":"2022-04-05T18:19:23.663Z","updated_at":"2026-10-05T23:55:36.443Z","registry_url":"https://rubygems.org/gems/bootboot","install_command":"gem install bootboot -s https://rubygems.org","documentation_url":"http://www.rubydoc.info/gems/bootboot/","metadata":{"funding":null},"repo_metadata":{"id":33864732,"uuid":"157651245","full_name":"Shopify/bootboot","owner":"Shopify","description":"Dualboot your Ruby app made easy","archived":false,"fork":false,"pushed_at":"2025-12-13T04:01:08.000Z","size":110,"stargazers_count":447,"open_issues_count":14,"forks_count":37,"subscribers_count":318,"default_branch":"main","last_synced_at":"2026-10-05T13:28:07.056Z","etag":null,"topics":["boot","dependencies","tooling"],"latest_commit_sha":null,"homepage":"","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/Shopify.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2018-11-15T04:17:29.000Z","updated_at":"2026-10-02T14:52:03.000Z","dependencies_parsed_at":"2026-01-11T20:00:39.069Z","dependency_job_id":null,"html_url":"https://github.com/Shopify/bootboot","commit_stats":{"total_commits":72,"total_committers":21,"mean_commits":"3.4285714285714284","dds":0.6388888888888888,"last_synced_commit":"2ee386b19ca76d40cd31bcb534d9ed24637872e8"},"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/Shopify/bootboot","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Shopify%2Fbootboot","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Shopify%2Fbootboot/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Shopify%2Fbootboot/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Shopify%2Fbootboot/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Shopify","download_url":"https://codeload.github.com/Shopify/bootboot/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Shopify%2Fbootboot/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":343170754,"owners_count":38042348,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-10-03T21:59:58.778Z","status":"online","status_checked_at":"2026-10-05T02:00:06.766Z","response_time":83,"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"},"owner_record":{"login":"Shopify","name":"Shopify","uuid":"8085","kind":"organization","description":"","email":"engineering@shopify.engineering","website":"https://shopify.engineering/","location":"The Internet","twitter":"ShopifyEng","company":null,"icon_url":"https://avatars.githubusercontent.com/u/8085?v=4","repositories_count":1036,"last_synced_at":"2026-10-05T21:49:33.596Z","metadata":{"has_sponsors_listing":false,"funding":null},"html_url":"https://github.com/Shopify","funding_links":[],"total_stars":151261,"followers":8667,"following":0,"created_at":"2022-11-02T16:20:36.277Z","updated_at":"2026-10-05T21:49:33.724Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Shopify","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Shopify/repositories"},"tags":[{"name":"v0.2.2","sha":"4714ea18824714121a9f67ace9fd7567a8ea0ca0","kind":"tag","published_at":"2023-01-25T16:49:01.000Z","download_url":"https://codeload.github.com/Shopify/bootboot/tar.gz/v0.2.2","html_url":"https://github.com/Shopify/bootboot/releases/tag/v0.2.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/Shopify/bootboot@v0.2.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Shopify%2Fbootboot/tags/v0.2.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Shopify%2Fbootboot/tags/v0.2.2/manifests"},{"name":"v0.2.1","sha":"e6de9ef9c4cc1eac1eacc364541b587806760b69","kind":"tag","published_at":"2022-04-21T21:37:13.000Z","download_url":"https://codeload.github.com/Shopify/bootboot/tar.gz/v0.2.1","html_url":"https://github.com/Shopify/bootboot/releases/tag/v0.2.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/Shopify/bootboot@v0.2.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Shopify%2Fbootboot/tags/v0.2.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Shopify%2Fbootboot/tags/v0.2.1/manifests"},{"name":"v0.2.0","sha":"d24d35a7a95f4dbf87675e197facced650b97835","kind":"commit","published_at":"2020-09-14T13:03:39.000Z","download_url":"https://codeload.github.com/Shopify/bootboot/tar.gz/v0.2.0","html_url":"https://github.com/Shopify/bootboot/releases/tag/v0.2.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/Shopify/bootboot@v0.2.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Shopify%2Fbootboot/tags/v0.2.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Shopify%2Fbootboot/tags/v0.2.0/manifests"},{"name":"v0.1.2","sha":"19620fa62ab6966bd8a9caa8a431d91628abc6ca","kind":"commit","published_at":"2019-01-08T00:10:11.000Z","download_url":"https://codeload.github.com/Shopify/bootboot/tar.gz/v0.1.2","html_url":"https://github.com/Shopify/bootboot/releases/tag/v0.1.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/Shopify/bootboot@v0.1.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Shopify%2Fbootboot/tags/v0.1.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Shopify%2Fbootboot/tags/v0.1.2/manifests"},{"name":"v0.1.1","sha":"754c6c3014f4c025c9349a711c2842c9f652fb54","kind":"tag","published_at":"2018-11-20T20:33:43.000Z","download_url":"https://codeload.github.com/Shopify/bootboot/tar.gz/v0.1.1","html_url":"https://github.com/Shopify/bootboot/releases/tag/v0.1.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/Shopify/bootboot@v0.1.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Shopify%2Fbootboot/tags/v0.1.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Shopify%2Fbootboot/tags/v0.1.1/manifests"}]},"repo_metadata_updated_at":"2026-10-05T23:55:36.443Z","dependent_packages_count":0,"downloads":139730678,"downloads_period":"total","dependent_repos_count":1,"rankings":{"downloads":0.38190921153867596,"dependent_repos_count":21.579264281174385,"dependent_packages_count":15.693402169913359,"stargazers_count":2.8590225354311394,"forks_count":4.492590403764455,"docker_downloads_count":null,"average":9.001237720364403},"purl":"pkg:gem/bootboot","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/rubygems/bootboot","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/rubygems/bootboot","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/rubygems/bootboot/dependencies","status":null,"funding_links":[],"critical":true,"issue_metadata":{"last_synced_at":"2026-10-05T06:00:39.564Z","issues_count":21,"pull_requests_count":56,"avg_time_to_close_issue":8244912.5,"avg_time_to_close_pull_request":3069082.618181818,"issues_closed_count":8,"pull_requests_closed_count":55,"pull_request_authors_count":21,"issue_authors_count":17,"avg_comments_per_issue":1.7619047619047619,"avg_comments_per_pull_request":0.6428571428571429,"merged_pull_requests_count":51,"bot_issues_count":0,"bot_pull_requests_count":11,"past_year_issues_count":1,"past_year_pull_requests_count":1,"past_year_avg_time_to_close_issue":null,"past_year_avg_time_to_close_pull_request":119428.0,"past_year_issues_closed_count":0,"past_year_pull_requests_closed_count":1,"past_year_pull_request_authors_count":1,"past_year_issue_authors_count":1,"past_year_avg_comments_per_issue":1.0,"past_year_avg_comments_per_pull_request":2.0,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":1,"issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/Shopify%2Fbootboot/issues","maintainers":[{"login":"gmcgibbon","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/gmcgibbon"},{"login":"eileencodes","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/eileencodes"}],"active_maintainers":[]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/packages/bootboot/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/packages/bootboot/version_numbers","latest_version_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/packages/bootboot/latest_version","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/packages/bootboot/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/packages/bootboot/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/packages/bootboot/codemeta","maintainers":[{"uuid":"78226","login":"shopify","name":null,"email":null,"url":null,"packages_count":356,"html_url":"https://rubygems.org/profiles/shopify","role":null,"created_at":"2022-11-07T13:41:30.386Z","updated_at":"2022-11-07T13:41:30.386Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/maintainers/shopify/packages"}],"registry":{"name":"rubygems.org","url":"https://rubygems.org","ecosystem":"rubygems","default":true,"packages_count":212816,"maintainers_count":70329,"namespaces_count":0,"keywords_count":20672,"github":"rubygems","metadata":{"funded_packages_count":8620},"icon_url":"https://github.com/rubygems.png","created_at":"2022-04-04T15:19:23.446Z","updated_at":"2026-10-06T05:04:51.652Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/namespaces"}}],"commits":{"id":858199,"full_name":"Shopify/bootboot","default_branch":"main","total_commits":80,"total_committers":21,"total_bot_commits":6,"total_bot_committers":2,"mean_commits":3.8095238095238093,"dds":0.675,"past_year_total_commits":6,"past_year_total_committers":1,"past_year_total_bot_commits":0,"past_year_total_bot_committers":0,"past_year_mean_commits":6.0,"past_year_dds":0.0,"last_synced_at":"2026-10-05T06:01:18.419Z","last_synced_commit":"60af9157ee312481a9b304eb74ed66da45c00bd9","created_at":"2023-03-09T20:17:54.533Z","updated_at":"2026-10-05T06:01:18.224Z","committers":[{"name":"Edouard CHIN","email":"edouard.chin@shopify.com","login":"Edouard-chin","count":26},{"name":"Nikita Vasilevsky","email":"nikita.vasilevsky@shopify.com","login":"nvasilevski","count":12},{"name":"Jacob Smith","email":"jacob@jacobsmith.io","login":"jacobthemyth","count":6},{"name":"nekketsuuu","email":"nekketsuuu","login":"nekketsuuu","count":6},{"name":"dependabot[bot]","email":"49699333+dependabot[bot]","login":"dependabot[bot]","count":5},{"name":"Jenny Shen","email":"jenny.shen@shopify.com","login":"jenshenny","count":4},{"name":"David Rodríguez","email":"deivid.rodriguez@riseup.net","login":"deivid-rodriguez","count":3},{"name":"Matthew Riddle","email":"mriddle89@gmail.com","login":"mriddle","count":3},{"name":"Gannon McGibbon","email":"gannon.mcgibbon@gmail.com","login":"gmcgibbon","count":2},{"name":"bogdanvlviv","email":"bogdanvlviv@gmail.com","login":"bogdanvlviv","count":2},{"name":"Ashish Kulkarni","email":"ashish@kulkarni.dev","login":"ashkulz","count":1},{"name":"Benjamin Wood","email":"ben@hint.io","login":"benjaminwood","count":1},{"name":"Evan Brodie","email":"ecbrodie","login":"ecbrodie","count":1},{"name":"Jan Schill","email":"janschill@me.com","login":"janschill","count":1},{"name":"Nicholas La Roux","email":"larouxn@gmail.com","login":"larouxn","count":1},{"name":"Nick Schwaderer","email":"nick.schwaderer@shopify.com","login":"Schwad","count":1},{"name":"Peter Goldstein","email":"peter.m.goldstein@gmail.com","login":"petergoldstein","count":1},{"name":"Yevhenii Huselietov","email":"d46k16@gmail.com","login":"cursedcoder","count":1},{"name":"code-foundations[bot]","email":"80535592+code-foundations[bot]","login":"code-foundations[bot]","count":1},{"name":"eileencodes","email":"eileencodes@gmail.com","login":"eileencodes","count":1},{"name":"rrundzans","email":"rrundzans@gmail.com","login":"rrundzans","count":1}],"past_year_committers":[{"name":"nekketsuuu","email":"nekketsuuu","login":"nekketsuuu","count":6}],"commits_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories/Shopify%2Fbootboot/commits","host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2026-10-06T00:00:07.688Z","repositories_count":8133306,"commits_count":1238237847,"contributors_count":56574117,"owners_count":1704663,"committers_count":3751673,"icon_url":"https://github.com/github.png","host_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories"}},"issues_stats":{"full_name":"Shopify/bootboot","html_url":"https://github.com/Shopify/bootboot","last_synced_at":"2026-10-05T06:00:39.564Z","status":null,"issues_count":21,"pull_requests_count":56,"avg_time_to_close_issue":8244912.5,"avg_time_to_close_pull_request":3069082.618181818,"issues_closed_count":8,"pull_requests_closed_count":55,"pull_request_authors_count":21,"issue_authors_count":17,"avg_comments_per_issue":1.7619047619047619,"avg_comments_per_pull_request":0.6428571428571429,"merged_pull_requests_count":51,"bot_issues_count":0,"bot_pull_requests_count":11,"past_year_issues_count":1,"past_year_pull_requests_count":1,"past_year_avg_time_to_close_issue":null,"past_year_avg_time_to_close_pull_request":119428.0,"past_year_issues_closed_count":0,"past_year_pull_requests_closed_count":1,"past_year_pull_request_authors_count":1,"past_year_issue_authors_count":1,"past_year_avg_comments_per_issue":1.0,"past_year_avg_comments_per_pull_request":2.0,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":1,"created_at":"2023-05-12T08:25:45.435Z","updated_at":"2026-10-05T06:00:39.564Z","repository_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/Shopify%2Fbootboot","issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/Shopify%2Fbootboot/issues","issue_labels_count":{},"pull_request_labels_count":{"dependencies":10,"ruby":2},"issue_author_associations_count":{"NONE":15,"CONTRIBUTOR":6},"pull_request_author_associations_count":{"CONTRIBUTOR":51,"NONE":3,"MEMBER":2},"issue_authors":{"Edouard-chin":5,"MarkyMarkMcDonald":1,"ecbrodie":1,"jscharf":1,"maths22":1,"HoneyryderChuck":1,"aogata-inst":1,"jdelStrother":1,"PhilCoggins":1,"tjchambers":1,"searls":1,"tesssie":1,"bf4":1,"Illianthe":1,"gregfletch":1,"joelim41":1,"shopify-services":1},"pull_request_authors":{"Edouard-chin":13,"dependabot[bot]":10,"nvasilevski":8,"systemist":4,"deivid-rodriguez":2,"mriddle":2,"bogdanvlviv":2,"Schwad":2,"gmcgibbon":1,"nekketsuuu":1,"janschill":1,"ecbrodie":1,"jenshenny":1,"cursedcoder":1,"eileencodes":1,"benjaminwood":1,"code-foundations[bot]":1,"petergoldstein":1,"larouxn":1,"ashkulz":1,"rrundzans":1},"host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2026-10-06T00:00:07.616Z","repositories_count":17835518,"issues_count":47484753,"pull_requests_count":147440483,"authors_count":11932818,"icon_url":"https://github.com/github.png","host_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories","owners_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/owners","authors_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors"},"past_year_issue_labels_count":{},"past_year_pull_request_labels_count":{},"past_year_issue_author_associations_count":{"NONE":1},"past_year_pull_request_author_associations_count":{"CONTRIBUTOR":1},"past_year_issue_authors":{"HoneyryderChuck":1},"past_year_pull_request_authors":{"nekketsuuu":1},"maintainers":[{"login":"gmcgibbon","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/gmcgibbon"},{"login":"eileencodes","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/eileencodes"}],"active_maintainers":[]},"events":{"total":{"CreateEvent":1,"ForkEvent":3,"PullRequestEvent":3,"PushEvent":2,"WatchEvent":12},"last_year":{"PullRequestEvent":1,"PushEvent":2,"WatchEvent":2}},"keywords":["boot","dependencies","tooling"],"dependencies":[{"ecosystem":"rubygems","filepath":"Gemfile","sha":null,"kind":"manifest","created_at":"2022-07-13T14:32:37.273Z","updated_at":"2022-07-13T14:32:37.273Z","repository_link":"https://github.com/Shopify/bootboot/blob/main/Gemfile","dependencies":[{"id":216539885,"package_name":"rubocop-shopify","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"runtime","optional":false},{"id":216539886,"package_name":"rake","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"development","optional":false},{"id":216539887,"package_name":"rubocop","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"development","optional":false}]},{"ecosystem":"rubygems","filepath":"Gemfile.lock","sha":null,"kind":"lockfile","created_at":"2022-07-13T14:32:37.378Z","updated_at":"2022-07-13T14:32:37.378Z","repository_link":"https://github.com/Shopify/bootboot/blob/main/Gemfile.lock","dependencies":[{"id":216540056,"package_name":"bootboot","ecosystem":"rubygems","requirements":"0.2.1","direct":false,"kind":"runtime","optional":false},{"id":216540057,"package_name":"ast","ecosystem":"rubygems","requirements":"2.4.2","direct":false,"kind":"runtime","optional":false},{"id":216540058,"package_name":"minitest","ecosystem":"rubygems","requirements":"5.15.0","direct":false,"kind":"runtime","optional":false},{"id":216540059,"package_name":"parallel","ecosystem":"rubygems","requirements":"1.22.1","direct":false,"kind":"runtime","optional":false},{"id":216540060,"package_name":"parser","ecosystem":"rubygems","requirements":"3.1.2.0","direct":false,"kind":"runtime","optional":false},{"id":216540061,"package_name":"rainbow","ecosystem":"rubygems","requirements":"2.2.2","direct":false,"kind":"runtime","optional":false},{"id":216540062,"package_name":"rake","ecosystem":"rubygems","requirements":"13.0.6","direct":false,"kind":"runtime","optional":false},{"id":216540063,"package_name":"regexp_parser","ecosystem":"rubygems","requirements":"2.3.0","direct":false,"kind":"runtime","optional":false},{"id":216540064,"package_name":"rexml","ecosystem":"rubygems","requirements":"3.2.5","direct":false,"kind":"runtime","optional":false},{"id":216540065,"package_name":"rubocop","ecosystem":"rubygems","requirements":"1.28.1","direct":false,"kind":"runtime","optional":false},{"id":216540066,"package_name":"rubocop-ast","ecosystem":"rubygems","requirements":"1.17.0","direct":false,"kind":"runtime","optional":false},{"id":216540067,"package_name":"rubocop-shopify","ecosystem":"rubygems","requirements":"2.5.0","direct":false,"kind":"runtime","optional":false},{"id":216540068,"package_name":"ruby-progressbar","ecosystem":"rubygems","requirements":"1.11.0","direct":false,"kind":"runtime","optional":false},{"id":216540069,"package_name":"unicode-display_width","ecosystem":"rubygems","requirements":"2.1.0","direct":false,"kind":"runtime","optional":false}]},{"ecosystem":"rubygems","filepath":"bootboot.gemspec","sha":null,"kind":"manifest","created_at":"2022-07-13T14:32:37.514Z","updated_at":"2022-07-13T14:32:37.514Z","repository_link":"https://github.com/Shopify/bootboot/blob/main/bootboot.gemspec","dependencies":[{"id":216540394,"package_name":"minitest","ecosystem":"rubygems","requirements":"~\u003e 5.0","direct":true,"kind":"development","optional":false},{"id":216540395,"package_name":"rake","ecosystem":"rubygems","requirements":"~\u003e 10.0","direct":true,"kind":"development","optional":false}]},{"ecosystem":"actions","filepath":".github/workflows/ci.yml","sha":null,"kind":"manifest","created_at":"2023-01-15T03:02:32.785Z","updated_at":"2023-01-15T03:02:32.785Z","repository_link":"https://github.com/Shopify/bootboot/blob/main/.github/workflows/ci.yml","dependencies":[{"id":6913310897,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v3","direct":true,"kind":"composite","optional":false},{"id":6913310898,"package_name":"ruby/setup-ruby","ecosystem":"actions","requirements":"v1","direct":true,"kind":"composite","optional":false}]},{"ecosystem":"actions","filepath":".github/workflows/cla.yml","sha":null,"kind":"manifest","created_at":"2023-01-15T03:02:32.890Z","updated_at":"2023-01-15T03:02:32.890Z","repository_link":"https://github.com/Shopify/bootboot/blob/main/.github/workflows/cla.yml","dependencies":[{"id":6913310899,"package_name":"Shopify/shopify-cla-action","ecosystem":"actions","requirements":"v1","direct":true,"kind":"composite","optional":false}]}],"score":28.626295067696486,"created_at":"2024-12-15T21:38:08.269Z","updated_at":"2026-10-06T06:30:31.960Z","avatar_url":"https://github.com/Shopify.png","language":"Ruby","monthly_downloads":0,"readme":"## 👢👢 Bootboot   - [![Build Status](https://github.com/Shopify/bootboot/actions/workflows/ci.yml/badge.svg)](https://github.com/Shopify/bootboot/actions/workflows/ci.yml)\n\nIntroduction\n------------\nBootboot is a [Bundler plugin](https://bundler.io/v1.17/guides/bundler_plugins.html#what-is-a-plugin) meant to help dual boot your ruby application.\n\n#### What is \"Dual booting\"?\nIn this context, dual boot is the process of booting your application with a different set of dependencies. This technique has become very popular in the Ruby community to help applications safely upgrade dependencies. If you want to learn more about it, have a look at this [conference talk](https://www.youtube.com/watch?v=I-2Xy3RS1ns\u0026t=368s) by @rafaelfranca.\n\nThere are two schools on how to dual boot your app, each having advantages and disadvantages.\n1) Use three Gemfiles. One with current production dependencies, a second with an alternate \"next\" set of dependencies, and a third containing the dependencies that both Gemfiles have in common.\n```ruby\n# Gemfile.common\ngem \"some_gem\"\n\n# Gemfile\ngem \"rails\", \"~\u003e 6.1.7.3\"\neval_gemfile \"Gemfile.common\"\n\n# Gemfile.next\ngem \"rails\", \"~\u003e 7.0.4.3\"\neval_gemfile \"Gemfile.common\"\n```\n\n2) Have a single Gemfile containing dependencies separated by environment sensitive `if` statements.\n```ruby\n# Gemfile\n\nif ENV['DEPENDENCIES_NEXT']\n  gem \"rails\", \"~\u003e 7.0.4.3\"\nelse\n  gem \"rails\", \"~\u003e 6.1.7.3\"\nend\n```\n-----------------------------\nThe former doesn't require any Bundler workaround but you need to deal with three Gemfiles and the [confusion](https://github.com/bundler/bundler/issues/6777#issuecomment-436771340) that comes with it.\nThe latter is the approach we decided to take at Shopify and it worked very well for us for multiple years.\n\nNo matter what approach you decide to take, you'll need to create tooling to ensure that all the lockfiles are in sync whenever a developer updates a dependency.\n\nBootboot is only useful if you decide to follow the second approach. It creates the required tooling as well as the Bundler workaround needed to enable dual booting.\n\nInstallation\n------------\n1) In your Gemfile, add this\n```ruby\nplugin 'bootboot', '~\u003e 0.2.2'\n```\n2) Run `bundle install \u0026\u0026 bundle bootboot`\n3) You're done. Commit the Gemfile and the Gemfile_next.lock\n\nNote: You should only run `bundle bootboot` once to install the plugin, otherwise your Gemfile will get updated each time you run it.\n\nDual boot it!\n------------\nIf you want to boot using the dependencies from the `Gemfile_next.lock`, run any bundler command prefixed with the `DEPENDENCIES_NEXT=1` ENV variable. I.e. `DEPENDENCIES_NEXT=1 bundle exec irb`.\n\n**Note:** `bootboot` will use the gems and Ruby version specified per environment in your `Gemfile` to resolve dependencies and keep `Gemfile.lock` and `Gemfile_next.lock` in sync, but it does not do any magic to actually change the running Ruby version or install the gems in the environment you are not currently running, it simply tells Bundler which Ruby and gem versions to use in its resolution algorithm and keeps the lock files in sync. If you are a developer who is not involved in updating the dependency set, this should not affect you, simply use bundler normally. _However_, if you are involved in the dependency changes directly, you will often have to run `DEPENDENCIES_NEXT=1 bundle install` after making changes to the dependencies.\n\n```sh\n# This will update Gemfile.lock and Gemfile_next.lock and install the gems\n# specified in Gemfile.lock:\n$ bundle update some_gem\n# This will actually install the gems specified in Gemfile_next.lock\n$ DEPENDENCIES_NEXT=1 bundle install\n```\n\nDual boot different Ruby versions\n---------------------------------\n\nWhile dual booting is often used for framework upgrades, it is also possible to use `bootboot` to dual boot two Ruby versions, each with its own set of gems.\n\n```ruby\n# Gemfile\n\nif ENV['DEPENDENCIES_NEXT']\n  ruby '3.2.2'\nelse\n  ruby '3.1.4'\nend\n```\n\nDual booting Ruby versions does incur some additional complications however, see the examples following for more detail.\n\nExample: updating a gem while dual booting Ruby versions\n--------------------------------------------------------\n\nTo dual boot an app while upgrading from Ruby 3.1.4 to Ruby 3.2.2, your Gemfile would look like this:\n\n```ruby\n# Gemfile\n\nif ENV['DEPENDENCIES_NEXT']\n  ruby '3.2.2'\nelse\n  ruby '3.1.4'\nend\n```\n\nAfter running `bundle install`, `Gemfile.lock` will have:\n\n```\nRUBY VERSION\n   ruby 3.1.4p206\n```\n\nand `Gemfile_next.lock` will have:\n\n```\nRUBY VERSION\n   ruby 3.2.2p114\n```\nAssuming there's a gem `some_gem` with the following constraints in its gemspecs:\n\n```ruby\n# some_gem-1.0.gemspec\nspec.version = \"1.0\"\nspec.required_ruby_version = '\u003e= 3.1.4'\n```\n\n```ruby\n# some_gem-2.0.gemspec\nspec.version = \"2.0\"\nspec.required_ruby_version = '\u003e= 3.2.2'\n```\n\nRunning `bundle update some_gem` will use Ruby 3.1.4 to resolve `some_gem` for `Gemfile.lock` and Ruby 3.2.2 to resolve `some_gem` for `Gemfile_next.lock` with the following results:\n\nGemfile.lock:\n```\nspecs:\n  some_gem (1.0)\n```\n\nGemfile_next.lock:\n```\nspecs:\n  some_gem (2.0)\n```\n\n**Note:** It is important to note that at this point, `some_gem 2.0` **will not** be installed on your system, it will simply be specified in `Gemfile_next.lock`, since installing it on the system would require changing the running Ruby version. This is sufficient to keep `Gemfile_next.lock` in sync, but is a potential source of confusion. To install gems under both versions of Ruby, see the next section.\n\nVendoring both sets of gems\n---------------------------\nTo vendor both sets of gems, make sure caching is enabled by checking `bundle config` or bundle gems using `bundle pack`.\n\n```bash\nbundle pack\nDEPENDENCIES_NEXT=1 bundle pack\n```\n\n### Example: running Ruby scripts while dual booting Ruby versions\n\nWhen running Ruby scripts while dual booting two different Ruby versions, you have to remember to do two things simultaneously for every command:\n- Run the command with the correct version of Ruby\n- Add the DEPENDENCIES_NEXT environment variable to tell bundler to use `Gemfile_next.lock`\n\nSo to run a spec in both versions, the workflow would look like this (assuming chruby for version management):\n\n```sh\n$ chruby 3.1.4\n$ bundle exec rspec spec/some_spec.rb\n$ chruby 3.2.2\n$ DEPENDENCIES_NEXT=1 bundle exec rspec spec/some_spec.rb\n```\n\nPerhaps more importantly, to update or install a gem, the workflow would look like this:\n\n```sh\n# This will update Gemfile.lock and Gemfile_next.lock and install the gems\n# specified in Gemfile.lock:\n$ chruby 3.1.4\n$ bundle update some_gem\n# This will actually install the gems specified in Gemfile_next.lock under the\n# correct Ruby installation:\n$ chruby 3.2.2\n$ DEPENDENCIES_NEXT=1 bundle install\n```\n\nConfiguration (Optional)\n------------------------\nBy default Bootboot will use the `DEPENDENCIES_NEXT` environment variable to update your Gemfile_next.lock. You can however configure it. For example, if you want the dualboot to happen when the `SHOPIFY_NEXT` env variable is present, you simply have to add this in your Gemfile:\n\n```ruby\n# Gemfile\nBundler.settings.set_local('bootboot_env_prefix', 'SHOPIFY')\n```\n\nKeep the `Gemfile_next.lock` in sync\n------------\nWhen a developer bumps or adds a dependency, Bootboot will ensure that the `Gemfile_next.lock` snapshot gets updated.\n\n**However, this feature is only available if you are on Bundler `\u003e= 1.17`**\nOther versions will trigger a warning message telling them that Bootboot can't automatically keep the `Gemfile_next.lock` in sync.\n\nIf you use the deployment flag (`bundle --deployment`) this plugin won't work on Bundler `\u003c= 2.0.1`. Consider using this workaround in your Gemfile for these versions of Bundler:\n\n```ruby\nplugin 'bootboot', '~\u003e 0.1.2' unless Bundler.settings[:frozen]\n```\n","funding_links":[],"readme_doi_urls":[],"works":{},"citation_counts":{},"total_citations":0,"keywords_from_contributors":["activerecord","rubygems","activejob","mvc","rubocop","code-formatter","static-code-analysis","feature-flag","ruby-gem","gem"],"project_url":"https://ruby.ecosyste.ms/api/v1/projects/530","html_url":"https://ruby.ecosyste.ms/projects/530"}