Веб- сайт 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 (с соответствующим названием). Сегодня вы можете найти множество инструментов для:
- Программно построить элементы пользовательского интерфейса
- Создание форм с использованием знакомого синтаксиса Ruby (хэш)
- Использовать XCode Interface Builder и Storyboard UI форматы
Есть даже эмуляции Model и ActiveRecord, чтобы ветераны Rails чувствовали себя как дома.
И новые приложения для iOS появляются в Apple App Store, написанные на RubyMotion , почти каждый день. Некоторые из последних включают в себя:
- Ежедневный Фокус
- Кнопка GG
- Примечания маяка
- iBuy США
- Хорошие привычки
- FanBoat
- StreetFood London
- Глобальный чат
Система сборки доступна как 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.