Kori John Roys
Kori John Roys

Reputation: 2661

How to make a Ruby gem executable

I can use gems like RSpec or Rails or Pry by calling their respective gem names, e.g. rspec, rails, pry on the commandline. How can I achieve this with gems I create? I'm using bundler for the basic gem creation.

Upvotes: 14

Views: 9269

Answers (3)

Kori John Roys
Kori John Roys

Reputation: 2661

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($\)

Upvotes: 14

Hauleth
Hauleth

Reputation: 23586

According to documentation of Gemspec file you must put your executable in bin/ folder.

Upvotes: 6

Mark
Mark

Reputation: 6404

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.

Upvotes: 4

Related Questions