Packaging Ruby gems
In the Ruby community the most common way to distribute software is in a packaged format cutely named gems (similar to the Python concept of Eggs). This manages dependencies and meta data much like the other packaging platforms, but with Ruby syntax in a file called ‘#{you_gems_name}.gemspec’. This process is completely automated through the Ruby gems, gem
(installation/RubyGems.org integration), bundler
(dependency management and boiler plate code), and rake
(Ruby make, to streamline the process). So the release process is as simple as updating the metadata (version number, and any changelog, or whatever) and running rake build
, rake release
. From there anyone with a working Ruby install and internet connection can simply run gem install #{your_gem_name}
. They could also take the local gem created by rake build
and gem install #{path/to/gem}
.
This makes sense for my rtasklib
library, because it is really only useful for people who are already using Ruby and are familiar with its conventions. But what about for task_time
? In an ideal world users wouldn’t even have to know that it runs on Ruby. Luckily Fedora has an extensive guide for packaging gems into RPMs. It makes the distinction between gems used as libraries (like rtasklib
), gems used as applications (like task_time
), Ruby scripts not in the gem format. The plan is to release both libraries on RubyGems.org/profiles/dropofwill so that they will be internet accessible, as well as a library RPM package for rtasklib
and an application RPM package for task_time
.