Skip to content
Switch branches/tags

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time


Build Status

webapp which hosts rubygems or a proxy to rubygems. delivers gem maven artifacts as well. the proxy can be configured to be caching proxy or non-caching proxy


the regular webapp with hosted and (caching-)proxy can be built with

 mvn package

or just run it in place with

 mvn jetty:run

where the hosted rubygems are located under http://localhost:8989/hosted and the proxy with as source is reachable under http://localhost:8989/caching or http://localhost:8989/proxy. and the http://localhost:8989/merge will combine all three to on rubygems repository.

executable standalone

you also can start the war like this (using embedded jetty):

 mvn package -Pexecutable
 java -jar target/rubygems.war

and adjust the <> to your liking.


add them to your gem command

  • gem sources add <http://localhost:8989/hosted>
  • gem sources add <http://localhost:8989/caching>
  • gem sources add <http://localhost:8989/proxy>
  • gem sources add <http://localhost:8989/merged>

or use the (caching-)proxy with bundler (example only for

  • bundler config mirror. http://localhost:8989/proxy
  • bundler config mirror. http://localhost:8989/caching
  • bundler config mirror. http://localhost:8989/merged

the Gem-Artifacts are accessible via

you need a mirror declaration and in your settings.xml

      <name>Rubygems Prereleases</name>

since some old gem-artifacts use the those repositories (old in sense they originally came from

for more details about Gem-Artifacts see for a solution with access control, more advanced proxy features and merging (group) to repositories see


the underlying library nexus-ruby-tools can handle gem push my-1.0.0.gem but somehow I have not deciphered how to use and a local repo without manually editing the config files.

the easiest way is to use the nexus gem which was tailor made for the nexus-ruby-tools.

gem install nexus

then you can upload your gem with

gem nexus my-1.0.0.gem

it will prompt for the url which is http://localhost:8989/hosted from above. empty username and password will finally push the gem. since the username and passoword was empty it will be prompted again.

non-caching proxy

this proxy configuration does not cache the gem-files itself but instead sends a redirect to <>. all other files are cached the same way as the caching proxy:

    mvn jetty:run -P proxy

with url <http://localhost:8989/proxy> (not yet installed)

the webapp for this rubygems-proxy is under the profile **legacy**

     mvn clean package -Plegacy

which is just a proxy (mvn jetty:run -Plegacy)

*  <http://localhost:8989/releases>
*  <http://localhost:8989/prereleases>


some integration tests for proxy feature can be executed with

    mvn -P run-its
    mvn -P run-its -Plegacy

deploy to maven central

    mvn versions:set
    git ci -m 'prepare release' pom.xml
    mvn -Prelease,executable
    git tag ...
    mvn versions:set
    git ci -m 'next dev version' pom.xml
    git push
    git push --tags


1. Fork it
2. Create your feature branch (`git checkout -b my-new-feature`)
3. Commit your changes (`git commit -am 'Added some feature'`)
4. Push to the branch (`git push origin my-new-feature`)
5. Create new Pull Request


enjoy :) 


webapp which hosts rubygems or a proxy to rubygems. delivers gem maven artifacts as well




No packages published