#inspect 2015 in Paris announced


#inspect will be in France this year, in Paris on the 1st and 2nd of July.

You can find more info here. Here is the blog post announcing it.

Many of our team will be there, Jamon Holmgren and I will be giving a presentation about RedPotion (see more about RedPotion below).

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

Happy coding, Todd Werth (@twerth)

Articles, News, New Gems, and Blog Posts

March 26th, 2015 | new gem | by digitalMoksha
linkify-it-rb – Links recognition library used with motion-markdown-it (for Ruby and RubyMotion)

March 26th, 2015 | new gem | by digitalMoksha
mdurl-rb – URL utilities for motion-markdown-it parser, for both Ruby and RubyMotion

March 25th, 2015 | new gem | by digitalMoksha
uc.micro-rb – Micro subset of unicode data files for motion-markdown-it projects (for Ruby and RubyMotion)

March 25th, 2015 | blog post | by Jamon Holmgren
A React.js Pattern for your RubyMotion app

March 19th, 2015 | new gem | by Gant Laborde
RedAlert – iOS Alerts and ActionSheets with ease

March 18th, 2015 | new gem | by Ryan Linton
medic – A RubyMotion wrapper for HealthKit

March 16th, 2015 | new gem | by Brian Pattison
oauth2 – A RubyMotion wrapper for the OAuth 2.0 protocol.

March 16th, 2015 | blog post | by RubyMotion
Announcing RubyMotion #inspect 2015

March 13th, 2015 | blog post | by Austin Seraphin
RubyMotion, the Apple Watch, and Accessibility

March 12th, 2015 | new gem | by Magoosh
motion_record – Miniature ActiveRecord for RubyMotion

March 11th, 2015 | blog post | by RubyMotion
Announcing the RubyMotion Community Forum

March 10th, 2015 | blog post | by RubyMotion
RubyMotion Success Story: Fandor

March 4th, 2015 | new gem | by Caram Dache
PresentationKit for RubyMotion

March 3rd, 2015 | blog post | by Shishir Joshi
Creating custom listviews in Android using RubyMotion

March 3rd, 2015 | new gem | by InfiniteRed, ClearSight, and David Larrabee
redpotion – Combines RMQ, ProMotion, CDQ, AFMotion, MotionPrint and MORE

March 3rd, 2015 | blog post | by Gant Laborde
Introducing RedPotion – Simple, Fast, Ruby Gem for iPhones

March 3rd, 2015 | blog post | by Paul Sturgess
Using PaintCode to Dynamically Create Images in the iOS Football Manager Game Title Challenge

March 1st, 2015 | new gem | by Jamon Holmgren
mem-watcher – Helps you keep an eye on your RubyMotion iOS app’s memory and CPU usage.

February 27th, 2015 | new gem | by Jamon Holmgren
motion-docs – Access RubyMotion documentation from your REPL

February 27th, 2015 | new gem | by digitalMoksha
motion-strscan – Implementation of StringScanner class for RubyMotion

RubyMotion News and Announcements

#inspect 2015 in Paris announced

#inspect will be in France this year, in Paris on the 1st and 2nd of July. Join us.

Announcing the new RubyMotion forums

The community has new forums to discuss RubyMotion thanks to Will Raxworthy who set it up using Discourse. It is much better than Google Groups.


RubyMotion 3.7 released

  • Fixed a bug where the motion command would not work as expected if Ruby was installed with rbenv/RVM.
  • [iOS] Fix a bug where the build system would not detect the properties of the running simulator if it existed with a different version of iOS.
  • [iOS] Fixed a bug where a WatchKit app would not launch on the simulator if it was built with x86_64 (64-bit Intel) only.
  • [iOS, OSX] Improved the symbolication of exception backtraces. Backtraces are now properly symbolicated when running on the device. This is done by parsing the dSYM bundle at runtime. For this to work, in development mode, the dSYM will be embedded within the application bundle. (This is disabled in release mode). You can control this setting with the app.embed_dsym variable in the project’s Rakefile.
  • [iOS, OSX] Improved performance when creating empty Hash objects. ~2 times faster.
  • [iOS, OSX] Improved performance when creating very small Array objects. ~30% faster.
  • [iOS, OSX] Bridgesupport files for vendor projects are now generated in the common build directory (~/Library/Rubymotion/build). This fixes a problem when vendoring the Reveal framework.
  • [iOS, OSX] Added a feature to disable capturing view (command key + moving mouse over) in iOS simulator or OS X app. To enable/disable capturing view, run enable_capture or disable_capture commands in REPL. If you want to disable capturing before the application is launched, you can set the DISABLE_CAPTURE environment variable when you will run the rake command. (ex. $ rake DISABLE_CAPTURE=1).
  • [Android] The runtime is now using the GNU C++ stdlib for better internal support and also upcoming new features.
  • [Android] Improved compilation time, compiling multiple files in parallel.
  • [Android] Support for defining manual file dependencies via app.files_dependencies.
  • [Android] Added Module#module_function.
  • [Android] Added Symbol#to_sym.
  • [Android] Added Time#usec.
  • [Android] Object#send now accepts strings.
  • [Android] Improved Kernel#rand to accept ranges (of fixnums and floats).
  • [Android] Fixed a bug where undefined local variables or methods returned false instead of raising an exception.
  • [Android] Fixed a bug where Java getter/setter shortcuts would sometimes not work.
  • [Android] Fixed a bug where a crash would happen when running a spec with a lot of test cases.
  • [Android] Fixed memory leaks when symbolicating an exception backtrace.

sudo motion update

Announcing RedPotion, the Rails of RubyMotion


The makers of RMQ at InfiniteRed and the creators of ProMotion at ClearSight as well as David Larrabee have teamed up to create the ultimate RubyMotion library: RedPotion.

image               image

Our goal is to create the Rails of RubyMotion, to be opinionated, and make best practices trivial.

We’ve taken ProMotion, mashed it up with RMQ, added some sugar, and selected a set of gems that covers everything you need, such as CDQ, afmotion, motion_print, etc.

The sugar we’ve added hides RMQ and makes it more ProMotion like, adds consistent methods to views and controllers, and generally makes a super nice consistent experience.

Here is some example code to give you the flavor of it:

class HomeScreen < PM::Screen
  title "My Awesome App"
  stylesheet HomeScreenStylesheet

  def on_load
    set_nav_bar_button :left, system_item: :camera, action: :nav_left_button

    append SectionView, :section

    @image_url = append!(UITextField, :image_url)
    @sample_image = append!(UIImageView, :sample_image)

    append(UIButton, :load_image).on(:touch) do |sender|
      @sample_image.remote_image = @image_url.text

    append(UIButton, :open_tasks).on(:touch) do |sender|
      open TasksScreen.new(nav_bar: true)

In RedPotion, you can use RMQ plugins and ProMotion add-ons.

Here is a blog post about it, and the repo.

App of the Week


Title challenge – “Football Management designed for mobile” – by Kyan Games

It has a very cool UI, here is a (https://www.youtube.com/watch?v=dVxzSpKP-x8).


  • bubble-wrap
  • ib
  • ruby-xcdm
  • motion-support


  • SWRevealViewController
  • MagicalRecord
  • SSZipArchive

CDQ tip by Ken Miller

Every CoreData context has a native thread associated with it. For NSMainQueueConcurrencyType, it’s the main thread itself. For NSPrivateQueueConcurrencyType, it’s a private thread maintained by CD itself. If you need to do any work with a context from outside its native thread (and for private contexts, that is always true for your code), you need to do your work by passing a block to performBlock or performBlockAndWait.


My company InfiniteRed sponsors this newsletter by allowing me the time to work on it and hosting everything.

Contact us if you ever need help working on a project, mentoring, or other development services . We specialize in RubyMotion and have an awesome team.



This week’s “App of the Week” has a crazy press page. I mean it’s very cool, but that’s a lot of work, good job Kyan team.

One more thing

I know the Dispatch doesn’t come out as often these days, but I hope you feel the quality has gone up, that every issue is packed with super useful information.

If you have any tips, blog posts, or comments, please send emails to todd@infinitered.com