Packing your Ruby application into a single executable.
- Works on Linux, Mac and Windows
- Creates a binary distribution of your application
- Supports natively any form of
require
andload
, including dynamic ones (e.g.load(my_path + 'x.rb'
) - Features zero-config auto-update capabilities to make your compiled project to stay updated
- Native C extensions are fully supported
- Rails applications are fully supported
- Open Source, MIT Licensed
It takes less than 5 minutes to compile any project with Ruby Compiler.
You won't need to modify a single line of code in your application, no matter how you developed it as long as it works in plain Ruby!
Architecture | Latest Stable | |
---|---|---|
macOS | x86-64 | http://enclose.io/rubyc/rubyc-darwin-x64.gz |
Linux | x86-64 | http://enclose.io/rubyc/rubyc-linux-x64.gz |
Windows | x86-64 | http://enclose.io/rubyc/rubyc-x64.zip |
For previous releases, cf. http://enclose.io/rubyc
First install the prerequisites:
- SquashFS Tools 4.3:
brew install squashfs
- Xcode
- You also need to install the
Command Line Tools
via Xcode. You can find this under the menuXcode -> Preferences -> Downloads
- This step will install
gcc
and the related toolchain containingmake
- You also need to install the
- Ruby
Then,
curl -L http://enclose.io/rubyc/rubyc-darwin-x64.gz | gunzip > rubyc
chmod +x rubyc
./rubyc --help
First install the prerequisites:
- SquashFS Tools 4.3
sudo yum install squashfs-tools
sudo apt-get install squashfs-tools
gcc
orclang
- GNU Make
- Ruby
Then,
curl -L http://enclose.io/rubyc/rubyc-linux-x64.gz | gunzip > rubyc
chmod +x rubyc
./rubyc --help
First install the prerequisites:
- SquashFS Tools 4.3
- Visual Studio 2015 Update 3, all editions including the Community edition (remember to select "Common Tools for Visual C++ 2015" feature during installation).
- Ruby
Then download rubyc-x64.zip,
and this zip file contains only one executable.
Unzip it. Optionally,
rename it to rubyc.exe
and put it under C:\Windows
(or any other directory that is part of PATH
).
Execute rubyc --help
from the command line.
If ENTRANCE was not provided, then a single Ruby interpreter executable will be produced. ENTRANCE can be either a file path, or a "x" string as in bundle exec "x".
rubyc [OPTION]... [ENTRANCE]
-r, --root=DIR The path to the root of the application
-o, --output=FILE The path of the output file
-d, --tmpdir=DIR The directory for temporary files
-c, --clean-tmpdir Cleans temporary files before compiling
--keep-tmpdir Keeps all temporary files that were generated last time
--make-args=ARGS Extra arguments to be passed to make
--nmake-args=ARGS Extra arguments to be passed to nmake
--auto-update-url=URL Enables auto-update and specifies the URL to get the latest version
--auto-update-base=STRING Enables auto-update and specifies the base version string
--debug Enable debug mode
-v, --version Prints the version of rubyc and exit
--ruby-version Prints the version of the Ruby runtime and exit
--ruby-api-version Prints the version of the Ruby API and exit
-h, --help Prints this help and exit
rubyc
./a.out (or a.exe on Windows)
git clone --depth 1 https://github.com/pmq20/ruby-compiler
cd ruby-compiler
rubyc bin/rubyc
./a.out (or a.exe on Windows)
rails new yours
cd yours
rubyc bin/rails
./a.out server (or a.exe server on Windows)
rubyc --gem=bundler --gem-version=1.15.4 bundle
./a.out (or a.exe on Windows)
- Libsquash: portable, user-land SquashFS that can be easily linked and embedded within your application.
- Libautoupdate: cross-platform C library to enable your application to auto-update itself in place.