Conference, gems, community, and Wat

Conference update

First up, the conference is coming soon, tickets are running out, get yours now. If you’re not there, you can’t get one of these cool stickers:



I’ve started to ask the creators of the “App of the Week” which gems they use. I find this information interesting.


I’ve renamed “One more thing” to “Wat”, I think that name is a better fit for the “stuff” I stick in there. Gant suggested it, so I stuck his incredibly useful gem in there this week 🙂


MotionKit was released recently, it is a replacement for the aging Teacup. Check it out, I think it’s awesome. Colin and Jamon did a great job.


I have this in the community section of my editorial because MotionKit and my library RMQ compete (the layout, subview, and stylesheet parts of RMQ), but I’m very happy to promote the use of it. The other library authors talk about RMQ too. This is why Ruby communities in general and the RubyMotion community is specific are so great, they’re mostly filled with really nice people. I like nice people, and I’m too old to hang around those that aren’t.

FYI, MotionKit should work really well alongside RMQ, but I haven’t tested that yet. Promotion and RMQ work well together.

If you missed the last issue, you can find it here: issue #25.

Happy coding, Todd Werth (@twerth)

Articles, News, New Gems, and Blog Posts

May 28th, 2014 – “meetup – CocoaKucha 4 with Motion#inspect” by Orta Therox

May 13th, 2014 – “meetup – KC Ruby: the great comet edition” by Wes Garison

May 5th, 2014 – “gem – motion-installr – RubyMotion Gem for Ad-hoc deployment using the amazing Installr service” by Jack Watson-Hamblin

May 5th, 2014 – “screencast – MotionInMotion – Distribute your RubyMotion apps with TestFlight and HockeyApp” by Jack Watson-Hamblin

May 5th, 2014 – “gem – motion-kit – The RubyMotion layout and styling gem” by Colin T.A. Gray

May 2nd, 2014 – “Core Data has selects” by Lori Olson

Apr 30th, 2014 – “Different Code Paths For RubyMotion Ad hoc Builds” by Hwee-Boon Yar

Apr 29th, 2014 – “Facebook’s Pop and RubyMotion” by Will Raxworthy

RubyMotion News

Version 2.27 released.

  • Added support for localization `.strings’ files which will be compiled as
    binary files. Thanks to Hwee-Boon Yar for the patch (pull request #154).
  • Added support for NSLocalizedString and friends. These are now available
    on Kernel.
  • Added missing AudioUnit bridgesupport metadata.
  • Improved the file dependencies detection code to spend less time when
    working on a project that has a significant number of dependencies.
    Thanks to Ignacio Piantanida for the detective work.
  • Fixed a regression introduced in RubyMotion 2.25 that was causing a
    build error in environment using Ruby 1.8.
  • Fixed a regression introduced in RubyMotion 2.25 that was causing a
    `not precompiled’ error if the method would handle a BOOL pointer as an
  • Fixed a bug where Boxed subclasses could not be re-opened safely.
  • Fixed a bug which shortcut for the method which was implemented on Ruby
    would not respond.
sudo motion update

RubyMotion App of the Week


Apr 24, 2014 – BraillED by Matt Brewer

“BraillED lets you easily learn braille on your iOS device. Explore the braille alphabet in a high contrast app designed specifically for the visually impaired. Audio cues and device vibrations aid in learning.”

This app uses the following gems:

  • motion-testflight
  • motion-cocoapods
  • motion-yaml
  • ProMotion
  • sugarcube
  • bubble-wrap
  • motion-settings-bundle
  • motion-map
  • motion-awesome
  • motion-acknowledgements
  • motion-screenshots
  • motion-speech
  • motion-launchpad
  • indoctrinator

Hidden Gem by Gant Laborde of Iconoclast Labs

If you’ve come from the Rails world, you’ve probably used an options hash,
and especially used reverse_merge to place your default values.
Unfortunately, reverse_merge doesn’t come from Ruby, it’s a nicety of
active_support/core_ext. You’ll have to just flip it around and use good
old merge.

For reference, if you wanted to do this:

def initialize(opts = {})
    # @options[:number_touches] is only set if the passed hash doesn't have the same respective key
    @options = opts.reverse_merge number_touches: 1

You’ll do this:

def initialize(opts = {})
  # @options[:number_touches] is only set if the passed hash doesn't havethe same respective key
  @options = {number_touches: 1}.merge(opts)

You can, of course, bring in the motion-support gem, which has reverse_merge,
but I wouldn’t add a dependency for a single method.



If you have any tips, blog posts, or want to sponsor this newsletter, please send emails to