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

···

--
Posted via http://www.ruby-forum.com/.

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

···

On Tue, Jul 6, 2010 at 2:42 PM, David Ainley <wrinkliez@gmail.com> 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.

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.

--
Rick DeNatale

Blog: http://talklikeaduck.denhaven2.com/
Github: rubyredrick (Rick DeNatale) · GitHub
Twitter: @RickDeNatale
WWR: http://www.workingwithrails.com/person/9021-rick-denatale
LinkedIn: http://www.linkedin.com/in/rickdenatale

David Ainley 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

···

--
Posted via http://www.ruby-forum.com/\.

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:

···

--
Posted via http://www.ruby-forum.com/.

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

···

On Tue, Jul 6, 2010 at 4:26 PM, David Ainley <wrinkliez@gmail.com> 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.

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 Tue, Jul 6, 2010 at 6:26 PM, David Ainley <wrinkliez@gmail.com> 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.

I appreciate the response though :slight_smile:
--
Posted via http://www.ruby-forum.com/\.

Ben Bleything wrote:

···

On Tue, Jul 6, 2010 at 4:26 PM, David Ainley <wrinkliez@gmail.com> > 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.
--
Posted via http://www.ruby-forum.com/\.

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

···

--
Posted via http://www.ruby-forum.com/\.

Ben Bleything 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.

···

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

> On Tue, Jul 6, 2010 at 4:26 PM, David Ainley <wrinkliez@gmail.com> > > > > wrote:

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

···

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

Ben Bleything wrote:
> On Tue, Jul 6, 2010 at 4:26 PM, David Ainley <wrinkliez@gmail.com> > > 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.

--

Jeremy Hinegardner jeremy@hinegardner.org

Roger Pack 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