Best way to make .rb into an executable for linux?

I have a pretty basic .rb script that I would like to turn into an
executable. What is the best way to do this for Linux? I have no
intentions of cross compatibility, so I don’t care if it won’t work for
Windows or Mac.

I’ve tried rubyscript2exe. Doesn’t work, but afaik, that’s old so
whatevz.
I’ve tried to install crate via “gem install crate”, but it gives me the
following error

Error installing crate:
ERROR: Failed to build gem native extension.

Can anyone give me a decent way to get a .rb to an executable for Linux?
(damn you ocra!)

Thanks guys.

wrinkliez

On Tue, Jul 6, 2010 at 2:42 PM, David A. [email protected]
wrote:

Error installing crate:
ERROR: Failed to build gem native extension.

Can anyone give me a decent way to get a .rb to an executable for Linux?
(damn you ocra!)

Thanks guys.

In Posix systems executable doesn’t necessarily mean a file has to be
binary.

Why not just put a shebang on the first line of the main file

#! /usr/bin/ruby

Check the actual path to put there by issuing the shell command which
ruby

Then chmod the file to be executable.

You can optionally leave the .rb off the end of the file name, or
symlink

e.g. if your main ruby file is

my_nifty_executable.rb

you could either rename it to just my_nifty_executable

or

ln -s my_nifty_executable.rb my_nifty_executable


Rick DeNatale

Blog: http://talklikeaduck.denhaven2.com/
Github: http://github.com/rubyredrick
Twitter: @RickDeNatale
WWR: http://www.workingwithrails.com/person/9021-rick-denatale
LinkedIn: http://www.linkedin.com/in/rickdenatale

I see. Well I could use that as a last resort I suppose, but won’t the
user have to download the entire Ruby language and gems and whatnot if I
go that route? Certainly no problem, but it just seems unnecessary.

I appreciate the response though :slight_smile:

On Tue, Jul 6, 2010 at 4:26 PM, David A. [email protected]
wrote:

I see. Well I could use that as a last resort I suppose, but won’t the
user have to download the entire Ruby language and gems and whatnot if I
go that route? Certainly no problem, but it just seems unnecessary.

Yes, that’s true. I think your best bet is going to be to figure out
why crate isn’t working… does it give you any more output than you
pasted above?

Ben

Ben B. wrote:

On Tue, Jul 6, 2010 at 4:26 PM, David A. [email protected]
wrote:

I see. �Well I could use that as a last resort I suppose, but won’t the
user have to download the entire Ruby language and gems and whatnot if I
go that route? �Certainly no problem, but it just seems unnecessary.

Yes, that’s true. I think your best bet is going to be to figure out
why crate isn’t working… does it give you any more output than you
pasted above?

Ben

The error is

ERROR: Failed to build gem native extension.

:S

And Charles, that’s a good idea. Let me give that a try.

FWIW, you can create a single-file executable (a jar file, basically,
run with java -jar jarfile.jar) with JRuby that runs anywhere Java’s
installed and doesn’t require any per-machine build or any other
dependencies to be installed (including JRuby itself). Might be an
easier path, if you’re willing to use JRuby.

On Tuesday, July 06, 2010 07:04:37 pm David A. wrote:

Ben B. wrote:

On Tue, Jul 6, 2010 at 4:26 PM, David A. [email protected]

wrote:

I see. �Well I could use that as a last resort I suppose, but won’t the
user have to download the entire Ruby language and gems and whatnot if I
go that route?

Yes. They’ll have to do that anyway. All of the solutions here revolve
around
making it easier for your users, but you’re not likely to save much in
terms
of bandwidth or disk space with any of these other approaches, unless
I’m
missing something.

The error is

ERROR: Failed to build gem native extension.

Are you sure that’s it? Almost always, that error is followed by a large
amount of text which indicates the actual error.

And Charles, that’s a good idea. Let me give that a try.

I don’t know that this is necessarily better. It’s a question of whether
they’re more likely to have Ruby or Java installed. It might be easier
to
manage with the gems, though…

If your target is Linux users, and gems aren’t good enough, look at
building
debs, RPMs, or whatever your users actually expect. You might be able to
depend on the more popular gems as native packages, and you might
combine that
with something like bundler to put anything missing into your package.

Of course, at this point, it might be getting a lot more complicated for
you
than a JRuby jar, so I guess that’s the advantage.

And of course, build a gem anyway, because that’s easy, and because any
new
solutions for building Ruby “executables” are likely to revolve around
gems.

Charles Nutter wrote:

FWIW, you can create a single-file executable (a jar file, basically,
run with java -jar jarfile.jar) with JRuby that runs anywhere Java’s
installed and doesn’t require any per-machine build or any other
dependencies to be installed (including JRuby itself). Might be an
easier path, if you’re willing to use JRuby.

Are there any step by step instructions on how to do that anywhere, by
chance?
-r

On Wed, Jul 07, 2010 at 09:04:37AM +0900, David A. wrote:

Ben

The error is

ERROR: Failed to build gem native extension.

This is probably a failure in building the amalgalite gem on your
system. Crate itself has no native extensions, but it does depend upon
amalgalite.

With crate, you would still have at least 2 files to ship to your end
user, the executable, and the sqlite database in which all the code
resides.

As the author of crate, I would not currently recommend it for
production use. It has been a while since I worked on it, and it
has not been kept up to date. I will eventually get back to working on
it when I have some copious free time. :slight_smile:

enjoy,

-jeremy

David A. wrote:

I have a pretty basic .rb script that I would like to turn into an
executable. What is the best way to do this for Linux? I have no
intentions of cross compatibility, so I don’t care if it won’t work for
Windows or Mac.

This list may help:

http://wiki.github.com/rdp/ruby_tutorials_core/ruby-talk-faq#ruby_to_exe

Roger P. wrote:

Charles Nutter wrote:

FWIW, you can create a single-file executable (a jar file, basically,
run with java -jar jarfile.jar) with JRuby that runs anywhere Java’s
installed and doesn’t require any per-machine build or any other
dependencies to be installed (including JRuby itself). Might be an
easier path, if you’re willing to use JRuby.
Are there any step by step instructions on how to do that anywhere, by
chance?

It’s been several years since I last tried it, but IIRC it’s basically

gem install rawr
cd /path/to/your/project
rawr install
# edit /path/to/your/project/build_configuration.rb
rake rawr:jar        # create an executable jar file
rake rawr:bundle:exe # create a Windows executable
rake rawr:bundle:app # create an OSX app bundle

And that’s more or less it.

Note that you will probably have to edit at least the c.source_dirs
configuration value, since Rawr generally assumes that you have a
mixed project and that your Ruby code lives under lib/ruby instead of
just lib. Other than that, you should be fine, Rawr will even
autodetect the c.project_name (I assume from the directory).

jwm