It's an Ivy-compatible proxy for RubyGems, which translates gems into JRuby-compatible JARs.
This tool is for people who:
- Are working with the Java tool chain: good ol'
javac, Maven, Ivy, Ant, Buildr and IDEs - Want to use some (J)Ruby
- Want to use gems from RubyGems
- Don't want to use multiple VMs (JVM and CRuby)
- Don't want to hand-roll a GemJar everytime their ruby deps change
- Don't want to use two dependencies management tools (Bundler + Ivy)
I'm hoping thats not just me...
- Add to your
repositories:
repositories {
maven {
url 'http://repository.gemjars.org/maven'
}
}- Add to your
dependencies:
dependencies {
compile 'org.rubygems:rspec:2.11.0'
}- Perform a
gradle dependenciesand watch it resolve rspec and all its transitive dependencies
- In your
ivysettings.xml, set up the following resolver:
<ivysettings>
...
<url name="gems">
<ivy pattern="http://repository.gemjars.org/ivys/[organization]/ivy-[module]-[revision].xml" />
<artifact pattern="http://repository.gemjars.org/jars/[organization]/[module]-[revision].jar" />
</url>
...
<chain name="default">
...
<resolver ref="gems" />
</chain>
</ivysettings>- In your
ivy.xml, add a dependency fromorg.rubygems.
<ivy-module version="2.0">
<dependency org="org.rubygems" name="cucumber" rev="1.0.0" />
</ivy-module>- Perform an
ivy resolveand watch Ivy resolve cucumber and all its transitive dependencies.
- Clone the repo:
$ git clone git://github.com/akiellor/gemjar.git- Get Gradle
$ brew install gradleOR
Get it from gradle.org.
- RUN IT:
$ gradle run - Hit some urls:
$ curl -i http://localhost:8080/jars/org.rubygems/cucumber-1.0.0.jar
$ curl -i http://localhost:8080/jars/org.rubygems/cucumber-1.0.0.jar.md5
$ curl -i http://localhost:8080/jars/org.rubygems/cucumber-1.0.0.jar.sha1
$ curl -i http://localhost:8080/ivys/org.rubygems/ivy-cucumber-1.0.0.xml
$ curl -i http://localhost:8080/ivys/org.rubygems/ivy-cucumber-1.0.0.xml.md5
$ curl -i http://localhost:8080/ivys/org.rubygems/ivy-cucumber-1.0.0.xml.sha1THIS IS A PROTOTYPE
- Construction of jruby compatible gemjars.
- Construction of ivy modules based on the gemspec.
- MD5 and SHA1 of all constructed artifacts.
- Can be built as a war.
- Maven
pom.xmlgeneration.
- Try it out.
- Give me feed back.