Статьи

RubyMotion: мечты сбываются

облако Веб- сайт RubyMotion называет это «революционным набором инструментов для iOS. Он позволяет вам быстро разрабатывать и тестировать нативные приложения для iOS… используя потрясающий язык Ruby, который вы знаете и любите ».
Как давний разработчик Ruby (и Rails), когда я впервые услышал об этом, я подумал, что я во сне!

Я пролистал эти «… за 24 часа» книги по разработке под iOS. Я боролся с Objective-C (до такой степени, что я назвал его «Неприятный-C»). И я боролся с особой методологией XCode «перетаскивать, чтобы связать элемент с его обработчиком событий».
Мысль о написании чистого Ruby, который можно скомпилировать в родную iOS, была захватывающей. Мое воображение заставило меня конвертировать некоторые из моих Rails-приложений напрямую в приложения для iPhone одним нажатием!

На самом деле RubyMotion компилируется в машинный код iOS. Приложения, которые вы пишете с его помощью, неотличимы от версий Objective C при отправке в Apple App Store. Код компилируется в машинный код LLVM.
Но это не так просто, как написать MRI Ruby и скомпилировать его для работы на iPad / iPhone / iPod.

Не совсем. Вам все еще нужно придерживаться некоторой структуры и синтаксиса Objective-C.
Тем не менее, компромисс более чем справедливый. Мы применяем наши любимые идиомы Ruby для iOS:

  • Утка-типирование
  • Знакомая точечная запись
  • Подразумеваемая доходность
  • Драгоценные камни
  • Связывание статических библиотек (iOS или другое RubyMotion)
  • Тестирование (на основе MacBacon )
  • Управление памятью
  • Интерактивный отладчик (только что появился в версии 1.24)
  • Цикл чтения-оценки-печати (эта единственная функция может «зацепить» вас в RubyMotion; почти так же, как DHH «Создать блог за 15 минут» привел огромное количество людей в Rails)

Еще одной ключевой особенностью является возможность свободно смешивать Ruby и Obj-C в вашем коде.
Вы даже можете написать код в RubyMotion, который может быть статически связан с проектом XCode!

В недавнем выступлении для нашей локальной группы пользователей Ruby я использовал этот простой, хотя и весьма надуманный пример, чтобы проиллюстрировать контраст между Objective-C и RubyMotion.

== ОБЪЕКТИВ-С ==

// Header (.h)
@interface Navigate: NSObjectc

@property (strong) NSString *name;
@property (strong) NSString *address;
@property (strong) CCLocation *location;

- (CLLocation)distanceFromLocation(CLLocation *)otherLocation;
@end

// Messages (.m)
@implementation Navigate

@synthesize name, address, location;

- (CLLocationDistance)distanceFromLocation(CLLocation *)otherLocation
{
return [self.location distanceFromLocation:otherLocation];
}

== RUBYMOTION ==

 // navigate.rb
class Navigate
  attr_accessor :name, :address, :location

  def distanceFromLocation(location)
    self.location.distanceFromLocation(location)
  end

end

Рабочий процесс в RubyMotion ** чрезвычайно ** знаком любому разработчику Rails:

Используя специализированный набор задач Rake

Напишите в своем любимом редакторе. Существуют плагины для Sublime Text 2, VIM, TextMate, EMacs, а RubyMotion полностью поддерживается в RubyMine начиная с версии 5.

Любимые инструменты, такие как Bundler и RVM, также работают.

Сообщество Ruby на помощь

Как указывалось ранее, это не совсем Нирвана для написания кода на Ruby (который работает, например, в приложении Rails) и его магической компиляции для запуска на iPhone. Хотя API iOS основан на MVC, а RubyMotion поддерживает концепцию контроллеров и представлений, при написании кода RubyMotion все еще требуются практические знания структуры iOS.

Члены активного сообщества продолжают вводить новшества и создавать полезные инструменты, помогающие прогрессу RubyMotion.

С самого начала сообщество разработчиков приступило к взлому и созданию, применяя врожденную способность Ruby к предметно-ориентированным языкам (DSL), и разработало набор утилит, которые «оборачивают» громоздкую форму NeXTStep более синтаксисом Ruby-esque. Самым первым был Bubble-Wrap (с соответствующим названием). Сегодня вы можете найти множество инструментов для:

Есть даже эмуляции Model и ActiveRecord, чтобы ветераны Rails чувствовали себя как дома.

И новые приложения для iOS появляются в Apple App Store, написанные на RubyMotion , почти каждый день. Некоторые из последних включают в себя:

Система сборки доступна как Open-Source на Github.
Хотя RubyMotion не является бесплатной, все эти библиотеки и инструменты поддержки созданы сообществом и доступны на Github . Развитие RubyMotion продвигалось с впечатляющей скоростью. HipByte , компания, созданная Лораном Сансонетти — создателем RubyMotion, чрезвычайно отзывчива к сообществу в отношении исправлений и обновлений.

Мои попытки написать приложения для iPhone / iPad / iPod / iAnything в « Obstinate-C » были настоящим кошмаром.
Возможность использовать гибкий и прощающий Ruby и его выразительный, похожий на английский стиль делает разработку для iOS мечтой.

Ресурсы, чтобы узнать больше

На веб-сайте RubyMotion есть вступительное видео . На сайте также есть Центр разработчиков и FAQ .
В Pragmatic Studio есть потрясающий бесплатный скринкаст, в котором показаны многие из основных моментов RubyMotion.
Для получения более подробной технической информации вы можете обратиться к руководству по времени выполнения на веб-сайте RubyMotion.
И MotionCasts.TV — это набор сгенерированных сообществом скринкастов, посвященных RubyMotion.