I have been submitting to ignorance. Even though I’ve been interested in getting into iOS development for a long time, I’ve been completely ignoring RubyMotion, assuming it was a simple cross-compiler that merely converted Ruby into ObjectiveC code. What I thought RubyMotion was simply felt… pointless. Just learn ObjectiveC, I said!
I can be pretty dumb.
Last night, curiosity finally made me watch the Getting Started video on the RubyMotion website, and guess what? It instantly won me over.
Turns out RubyMotion is nothing like what I thought it was; it actually compiles its own Ruby dialect into a static binary, directly wrapping around the iOS APIs, and it does so using a toolchain that makes a Rails developer like myself feel right at home – and then some.
rake will run my app in the simulator and start a REPL session that allows me to poke around inside the running application!
rake device will push the whole thing to my iOS device! And that’s just the stuff you’ll do in the first 5 minutes after installing RubyMotion. I’m in love.
A lot of people appear to object to RubyMotion’s license and pricing model, which is different from what you may be used to in today’s open-source-happy world.
RubyMotion is a proprietary product, it’s $199 for a single-seat license and a year of free updates, and there’s no demo or free version.
Personally, I’m more than happy to spend those $199; if I’m building iOS apps for money, $199 shouldn’t be a problem (even $199 per year for continued updates), but even if I never, ever release a single app, I’m happy to spend that kind of money simply for learning something new.
However, I fully understand people objecting to no demo or free version being available – currently, the only way to find out if RubyMotion is for you is to read up on it (like I did yesterday) or hear other people rave about it.
I’m perfectly happy for this to be a commercial product, it’s just not the kind of license I would have expected. Instead, part of me would have preferred a model where you get the software for free, but can’t actually push apps to your devices or distribute them without a license. I’m pretty sure that this would help RubyMotion adoption, but I’m also pretty sure that the developers behind it know this, too, so I guess there’s probably a very good (possibly technical) reason for things to be as they are.
Some stuff I’ve found
So here’s a bunch of links to RubyMotion related material that I’ve found in my short time of reading up on it.
- Clay Allsopp’s RubyMotion Tutorial is a must-read. Clay has also published a PragProg book. I don’t regret buying it ($11 for the eBook version), but the online tutorial feels somewhat more focused.
- Some of the Cocoa stuff you’ll use can be a bit verbose. sugarcube and BubbleWrap appear to be two popular gems providing simple DSLs wrapping around it, abstracting away a lot of the complexity.
- SimpleView gives you a simple DSL for building UIKit views. I enjoy the thought of building application UI programmatically, so I like what I’m seeing.
- Formotion is a DSL for generating iOS form views. Its beautiful simplicity reminds me of one of my favorite Rails gems ever, simple_form.
- MotionData is a DSL wrapping around Core Data. If you’re used to ActiveRecord or DataMapper, you should feel right at home.
- rubymotion-wrappers.com has a list of even more RubyMotion DSL gems.
As always, if you have any additional recommendations, please let me know here or on Twitter.