jim is a minimal tool for building and (eventually) publishing pure-Ruby gems.
Features:
- signs in to a gem host
- builds gems
- cleans up after itself (if you ask it to)
- will eventually be able to publish gems
Things jim is not going to do:
- jim will not support gems with native extensions.
- jim will not handle every edge case.
- jim will not manage locally-installed gems.
If you like jim and use Python, be sure to check out bork.
I'm hoping to provide single-file executables that bundle the entire gem, akin to Python's ZipApps.
The basic commands you will need are:
jim signin/jim signout: sign in or out of a gem host.jim build: build a gem, with the output in./build/.jim clean: removes things created byjim build.
Eventually, there will also be:
jim push: push the specified gem to the configured host.
puppy@cerberus:~/okay$ jim signin
Username: duckinator
Password:
OTP:
Please choose which scopes you want your API key to have:
index_rubygems? [Y/n]
push_rubygem? [y/N] y
yank_rubygem? [y/N]
Saved key with name "jim--cerberus-puppy-2025-10-25T152604" and scopes:
- index_rubygems
- push_rubygem
puppy@cerberus:~/okay$ jim build
Name: okay
Version: 12.0.4
Output: /home/puppy/okay/build/okay-12.0.4.gem
puppy@cerberus:~/okay$ gem list | grep okay
puppy@cerberus:~/okay$ gem install build/okay-12.0.4.gem
Successfully installed okay-12.0.4
1 gem installed
puppy@cerberus:~/okay$After checking out the repo, run bin/setup to install dependencies. Then, run rake spec to run the tests. You can also run bin/console for an interactive prompt that will allow you to experiment.
To install this gem onto your local machine, run bundle exec rake install. To release a new version, (TODO).
Bug reports and pull requests are welcome on GitHub at https://github.com/duckinator/jim.
The gem is available as open source under the terms of the MIT License.