{"id":13994435,"url":"https://github.com/PierreRambaud/gemirro","last_synced_at":"2025-07-22T19:32:26.057Z","repository":{"id":19900314,"uuid":"23165452","full_name":"PierreRambaud/gemirro","owner":"PierreRambaud","description":"Gem to automatically make a rubygems mirror.","archived":false,"fork":false,"pushed_at":"2024-10-10T12:06:29.000Z","size":682,"stargazers_count":137,"open_issues_count":9,"forks_count":26,"subscribers_count":6,"default_branch":"master","last_synced_at":"2024-10-14T10:35:25.442Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://rubygems.org/gems/gemirro","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":"h5bp/Front-end-Developer-Interview-Questions","license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/PierreRambaud.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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}},"created_at":"2014-08-20T21:51:25.000Z","updated_at":"2024-10-10T12:05:36.000Z","dependencies_parsed_at":"2024-10-25T18:38:54.677Z","dependency_job_id":"3402e92d-8b7a-40b8-b789-c9b7f8ae8111","html_url":"https://github.com/PierreRambaud/gemirro","commit_stats":{"total_commits":190,"total_committers":14,"mean_commits":"13.571428571428571","dds":0.4842105263157894,"last_synced_commit":"b5d6684109c64c9ae9b3240a9c996a7f6794ac0f"},"previous_names":[],"tags_count":35,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PierreRambaud%2Fgemirro","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PierreRambaud%2Fgemirro/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PierreRambaud%2Fgemirro/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PierreRambaud%2Fgemirro/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/PierreRambaud","download_url":"https://codeload.github.com/PierreRambaud/gemirro/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":227166723,"owners_count":17740971,"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":[],"created_at":"2024-08-09T14:02:52.395Z","updated_at":"2025-07-22T19:32:26.031Z","avatar_url":"https://github.com/PierreRambaud.png","language":"Ruby","readme":"# Gemirro | [![Build Status](https://travis-ci.org/PierreRambaud/gemirro.svg?branch=master)](https://travis-ci.org/PierreRambaud/gemirro) [![Gem Version](https://badge.fury.io/rb/gemirro.svg)](http://badge.fury.io/rb/gemirro)\n\nGemirro is a Ruby application that makes it easy way to create your own RubyGems mirror without having to push or write all gem you wanted in a configuration file.\nIt does mirroring without any authentication and you can add your private gems in the `gems` directory.\nMore, to mirroring a source, you only need to start the server, and gems will automaticly be downloaded when needed.\n\n## Requirements\n\n* Ruby 3.0 or newer\n* Enough space to store Gems\n* A recent version of Rubygems (`gem update --system`)\n\n## Installation\n\nAssuming RubyGems isn't down you can install the Gem as following:\n\n```bash\n$ gem install gemirro\n```\n\n## Usage\n\nThe process of setting up a mirror is fairly easy and can be done in few seconds.\n\nThe first step is to set up a new, empty mirror directory.\nThis is done by running the `gemirro init` command.\n\n```bash\n$ gemirro init /srv/http/mirror.com/\n```\n\nOnce created you can edit the main configuration file called [config.rb](https://github.com/PierreRambaud/gemirro/blob/master/template/config.rb).\nThis configuration file specifies what source to mirror, destination directory, server host and port, etc.\n\nOnce configured and if you add gem in the `define_source`, you can pull them by running the following command:\n\n```bash\n$ gemirro update\n```\n\nOnce all the Gems have been downloaded you'll need to generate an index of all the installed files. This can be done as following:\n\n```bash\n$ gemirro index\n$ gemirro index --update # Or only update new files\n```\n\nLast, launch the server, and all requests will check if gems are detected, and download them if necessary and generate index immediately.\n\n```bash\n$ gemirro server --start\n$ gemirro server --status\n$ gemirro server --restart\n$ gemirro server --stop\n\n```\n\nIf you want to use a custom configuration file not located in the current directory, use the `-c` or `--config` option.\n\n### Available commands\n\n```\nUsage: gemirro [COMMAND] [OPTIONS]\n\nOptions:\n\n    -v, --version      Shows the current version\n    -h, --help         Display this help message.\n\nAvailable commands:\n\n  index    Retrieve specs list from source.\n  init     Sets up a new mirror\n  list     List available gems.\n  server   Manage web server\n  update   Updates the list of Gems\n\nSee `\u003ccommand\u003e --help` for more information on a specific command.\n```\n\n## Apache configuration\n\nYou must activate the apache `proxy` module.\n\n```bash\n$ sudo a2enmod proxy\n$ sudo a2enmod proxy_http\n```\n\nCreate your VirtualHost and replace following `http://localhost:2000` with your custom server configuration located in your `config.rb` file and restart Apache.\n\n```\n\u003cVirtualHost *:80\u003e\n  ServerName mirror.gemirro\n  ProxyPreserveHost On\n  ProxyRequests off\n  ProxyPass / http://localhost:2000/\n  ProxyPassReverse / http://localhost:2000/\n\u003c/VirtualHost\u003e\n```\n\n## Nginx configuration\n\nReplace `localhost:2000` with your custom server configuration located in your `config.rb` file and restart Nginx.\n\n```\nupstream gemirro {\n  server localhost:2000;\n}\n\nserver {\n  server_name rbgems;\n\n  location / {\n    proxy_pass http://gemirro;\n    proxy_set_header Host $http_host;\n    proxy_set_header X-Real-IP $remote_addr;\n    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n  }\n}\n```\n\n## Known issues\n\n### could not find a temporary directory\n\nIf you use ruby \u003e= 2.0, some urls in the server throwing errors telling `could not find a temporary directory`.\nYou only need to do a `chmod o+t /tmp`\n\n","funding_links":[],"categories":["Gem Servers","Ruby"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FPierreRambaud%2Fgemirro","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FPierreRambaud%2Fgemirro","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FPierreRambaud%2Fgemirro/lists"}