The power of Ruby for iOS and OS X

rake Terminal-based workflow

Create a project. Run your app in the simulator. Deploy on your device. Create an App Store package. Everything is just one command away.

rake screenshot

RubyMotion projects are based on Rake. The Rakefile contains the entire project configuration with sensible default values.

explore Interactive development

RubyMotion comes with an interactive console that lets you navigate and introspect the iOS and OS X API jungle with ease, from the comfort of your terminal.

repl video

The console is connected to your application running in the simulator. Changes you interactively make are reflected in the app in real time.

heart Keep your editor

Thanks to its command-line infrastructure and its ctags support, RubyMotion can easily be integrated in almost any text editor.

Do you rock with Vim, Emacs or TextMate? You don't need to leave your favorite editor in order to use RubyMotion.

extend Embrace and extend

RubyMotion comes with its own flavor of gems that can be used to extend projects or apps. You simply require the gem in your project's Rakefile.

Want a DSL to deal with CoreData? Submit builds to TestFlight? Use Objective-C dependencies from CocoaPods? There is a wrapper for that.

recycle Testing

RubyMotion comes with a behavior-driven testing framework, extended for iOS and OS X, and integrated into every new project.

Functional and integration tests are covered. RubyMotion projects are suitable for test-driven development for the start.

debug Debugging

Your app crashed? It's okay. Crash reports are annotated with proper debugging information so that you know exactly where to look in your code.

RubyMotion also provides a fully-functional debugger on both the simulator and device that will most certainly help you in case things get too hairy.

Under the covers

ios

Unified runtime

RubyMotion implements Ruby on top of the Objective-C runtime and Foundation classes. Thanks to this tight integration, Ruby can interface with iOS and OS X very naturally at no performance expense.

runtime screenshot

You can mix Ruby and Objective-C code, always have access to the latest C and Objective-C iOS and OS X APIs, and also make use of 3rd-party frameworks.

llvm

Fully compiled

RubyMotion transforms the Ruby source code of your project into optimized, blazing-fast machine code using a revolutionary, state-of-the-art static compiler, based on LLVM.

compiler screenshot

The original source code is never present in the application bundle, neither the code is interpreted. A typical application weights less than 1MB.

gc Managed memory

It's Ruby, you don't need to think about managing memory. Ever. RubyMotion will by itself release the objects you create when they are no longer needed.

Our memory model, similar to Objective-C ARC in design, does not require any extra memory or processor footprint to allocate and reclaim unused objects.

libdispatch Fully concurrent

Shipping iOS and OS X devices such as iPhone, iPad and Mac now feature multicore processors. RubyMotion was designed to be re-entrant and without a global lock in order to allow code to be concurrently executed.

RubyMotion comes with a nice interface to Grand Central Dispatch that lets you balance heavy work very easily over CPU cores

Why RubyMotion?

Simple, as in Ruby

Ruby is a very high-level programming language designed to make humans productive and happy. It has a concise and flexible syntax that can be used to express powerful algorithms in very little code.

While Ruby was designed on the same semantics as Objective-C, it is syntaxically different. Ruby has no header files, no complicated syntax to define classes, properties or builtin types, and doesn't suffer from single namespace issues. We can go on. And Ruby offers many more features, while remaining simpler.

RubyMotion brings the Ruby language on iOS and OS X, allowing you to make use of Apple's frameworks from a very convenient and productive language.

You already know Ruby? You can write iOS and OS X apps, today.

Fast, as in Objective-C

Ruby has a reputation of being a slow language, due to problems in its historical implementation. Make no mistake, RubyMotion is not slow. Quite the contrary.

RubyMotion compiles Ruby and activates a load of performance optimizations, such as inline method caching, immediate fixed and floating numeric types, zero-cost exceptions, promotion of variables into CPU registers, cached constant lookups, tail-call optimization, dead code elimination, and many more.

RubyMotion makes Ruby as fast as Objective-C, if not faster in certain cases. RubyMotion apps start as fast as Objective-C ones and use the same amount of memory.

Your app will be so fast your fingers will be delighted.

macruby

Battle-tested core

RubyMotion is based on MacRuby, a widely-used implementation of Ruby created and maintained by Apple for over 4 years.

Starting from a solid and stable code base, the guys who originally created MacRuby now work on RubyMotion. You're in good hands.

Learn more about MacRuby

appstore

App Store compliant

RubyMotion is 100% compliant with Apple's App Store policies. Your code is compiled ahead-of-time, never interpreted, and you access the entire set of iOS and OS X public APIs.

At the end, a RubyMotion app looks pretty much the same as an Objective-C app.

Check out our Apps catalog