Issue 3

19 December 2018

by Lori M Olson

W00t! 3!!! weeks in a row. Hey, do you think that it would be useful to have a jobs section? For a (very) modest fee, I could include job ads for any RubyMotion jobs you might have open. Just a thought. Hit reply and let me know what YOU think!

This week I am wrapping up the final support sessions for this fall’s edition of 6 Pack Apps in WNDX School. It’s been a lot of fun to run this course for the first time, and I can hardly wait to get the next version scheduled. All I can say for now is that enrolment will open again before the end of March 2019. I have all sorts of new stuff to add, based on the feedback from this first run through, and I’m excited to get ready to help the next group of app creators get their apps launched in the App Store. Stay tuned, because enrolment will be limited again, and this newsletter is where you’ll hear first!

Slack Highlights

And in Slack this week, we had Matias Forbord, an experienced Ruby developer, asking about TDD (test driven development) with RubyMotion. Lots of great info shared in that thread, and Amir contributed some great examples of testing from his work. If anyone has more example testing code to offer, please go here and help out.

To repeat from last week… we have cancelled the December RubyMotion Meetup (these are held online). Current schedule seems to be causing some participation difficulties. Come on in to the #meetup channel and chime in about any days / times that are better or worse for yourself if you’d like to participate regularly!

And if you haven’t signed up for Slack yet, you can get access by going to

Gem of the Week

Ever tried to create a quick little CLI (command line interface) and get bogged down in handling the options? Look no further than Roman Le Négrate’s metaCLI gem, the Ruby command-line option parser for the lazy.

I’m featuring RubyMotion gems here each week. Sometimes because they are awesome, and sometimes because they need some love. Remember, if you have a gem you’d like featured, just reply to this email, or you can PM me in Slack!

Community Forum

From a couple of weeks back, we have this question on the forum that comes up pretty often, so I’ll include all the detail here.

"Objective-C stub for message evaluateJavaScript:completionHandler:
' typev@:@@?’ not precompiled. Make sure you properly link with the 
framework or library that defines this message."

The exact message differs, but the troubleshooting method to solving these “stub not precompiled” problems remains the same.

brew install ag
cd /Library/RubyMotion/data/ios/
ag evaluateJavaScript:completionHandler:

That will install ag and then search the bridgesupport files for the method signature in question. Which in this case yielded:

┌── [ /Library/RubyMotion/data/ios ]
±> ag evaluateJavaScript:completionHandler:
386:<method selector=‘evaluateJavaScript:completionHandler:’>

Since that’s in the WebKit bridgesupport file, we now know that WebKit is the missing framework, and it needs to be added to your project’s Rakefile like so:

Motion::Project::App.setup do |app|
app.frameworks << "WebKit"

And here’s your reminder to introduce yourself on the Hello World post on the community forum!

App Highlight of the Week

Ok, this isn’t an App Store app this week, but I discovered it on Instagram (I know, really?) and followed up to get the details. Jamie O’Conner of created a RubyMotion app to control the lighting in a marina in Victoria, BC (yay, 🇨🇦). Here’s a GIF of it in action.

Psst!!! If you have an app (even if it’s not in the App Store) let me know, and I’ll add it to the list to be featured!

All the videos from this year’s RubyConf are now available on Confreaks. I’ll point out the talk about RubyPlot, because it reminded me of a story about an early, early iOS app that a developer I know created. He didn’t know anything about creating charts and graphs for iOS, but he did know Excel. So… he used an old PC he hooked up in his basement, and had a URL that triggered an Excel function that spat out an chart image that he then used in his app. It was cached, so it only ever got generated once an hour or so. Crazy, eh? But it worked for him, for years.

That’s it for this week!

Regards, Lori

RubyMotion Weekly brought to you by