How to make a Ruby gem executable
To make your gem executable in CLI, you should set the followings up.
- Place your executable file the
bin
folder, likebin/hello
- Make that executable by set permissions (
chmod u+x bin/hello
) - Set up gemspec configuration accordingly (
hello.gemspec
)
spec.files = `git ls-files -Z`.split("\x0")
spec.bindir = 'bin'
spec.executables << 'hello'
spec.executables
considers bin
as default folder for binaries and executables, though you can change it.
You can find documentation about this here: Gemspec#executables.
According to documentation of Gemspec file you must put your executable in bin/
folder.
I actually had my executable in the /bin
folder.
Turns out my issue was that bundler's gem template is too smart for it's own good, and only includes files that have been committed to git. I hadn't actually committed the executable yet, so it wasn't picking it up:
# gemname.gemspec
gem.files = `git ls-files`.split($\)