How to make a Ruby gem executable

To make your gem executable in CLI, you should set the followings up.

  1. Place your executable file the bin folder, like bin/hello
  2. Make that executable by set permissions (chmod u+x bin/hello)
  3. 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($\)