Как начать писать IOS приложения с RubyMotion

Все пытаются создать красивое приложение для IOS, но разработка приложений на платформе Apple, традиционно требует большой опыт работы, с использованием языка программирования Objective — C.


Тем не менее, с выходом, новый среды разработки iOS приложений RubyMotion, любой желающий может сделать полностью родное приложение для IOS.

Разработчики RubyMotion постарались сделать все, чтобы обойти Objective — C, используя такие инструменты как PhoneGap и Trigger. Ранее они использовались для написания HTML и JavaScript приложений. Понятно, что в результате использования этих инструментов может получиться приложение, которое будет не соответствовать пользовательскому опыту. Кроме того, разработка приложений для мобильных приложений  — все – таки довольно узкоспециализированное направление. И начинающие разработчики использованием одного RubyMotion явно не обойдутся.  RubyMotion предназначена для разработки приложений без использования Objective — C. RubyMotion производит программы идентичные тем, которые созданы с помощью Objective — C, только в своей работе она использует более популярные и доступные языки программирования.

Как работает RubyMotion? В отличие от обычных Ruby, RubyMotion компилирует код и работает невероятно быстро. Это дает полный доступ к существующим IOS SDK и API-интерфейсам при сохранении гибкости и скорости Ruby. RubyMotion также производит интерактивную отладку и тестирование, процессы, которые не осуществляются при работе с  традиционными Xcode и Objective — C.

Есть надежда, что кодирование в Ruby с помощью набора инструментов RubyMotion, упростит написание приложений IOS для новых разработчиков, и сделает их работу более продуктивной. Я работаю на приложение IOS с оригинальным SDK, но я все равно решил попробовать поработать с RubyMotion, чтобы писать настоящие родные приложения на том же языке, что я уже использую для приложений под другие платформы.

Если вы завязли на изучении способов разработки приложений IOS или вам просто любопытно посмотреть что же такое RubyMotion, эта статья для вас. Мы попробуем создать приложение, использовав RubyMotion.

Для начала давайте установим RubyMotion.

Установка

RubyMotion является коммерческим продуктом компании HipByte, основанной разработчиками, которые создали MacRuby.Некоторые инструменты RubyMotion находятся в открытом доступе, но сам компилятор RubyMotion, (где и происходит все волшебство) нет. Несмотря на то, что RubyMotion всего несколько месяцев, в сети уже образовалось целое сообщество поклонников этой среды. Я также участвую в поддержке нескольких проектов связанных с RubyMotion, но к HipByte никакого отношения не имею.

Вы можете приобрести пожизненную лицензию на RubyMotion за $ 200 на официальном сайте компании — разработчика. Лицензия предоставляет графический инсталлятор, который устанавливает все на вашем Mac. Если у вас возникли проблемы, поддержка доступна в Твитере @ RubyMotion и через электронную почту.

RubyMotion также требуется установить Xcode от Mac App Store, чтобы иметь в наличии некоторые библиотеки и инструменты. Тем не менее, инструменты RubyMotion по работе находятся в командной оболочке, и вы можете использовать любой редактор или IDE по желанию. Дополнительные установочные пакеты также доступны для большинства редакторов. Их установка ускоряет работу и добавляет дополнительные функции.

Опыт работы с RubyGems и Rake также пойдет вам на пользу, потому что RubyMotion использует эти инструменты. RubyGems должен быть установлен на вашем Mac, и вы сможете использовать его, чтобы установить Rake, запустив в терминале gem install rake. Если вы никогда не видели эти слова прежде, не стоит беспокоиться, мы попробуем рассказать обо всем на доступном для новичков языке.

Создание проекта

В отличие от нормальных наборов инструментов IOS, RubyMotion работает в командной строке. Вы все еще можете использовать Interface Builder Xcode, чтобы создать интерфейс, но полная интеграция Xcode на данный момент не поддерживается. Таким образом, запустите терминал и давайте начнем.

RubyMotion использует две команды: rake и motion. Команда motion создает в RubyMotion проекты и управляет инструментами. Если вы до этого работали в Rails то, motion — это вроде как rails команды. Если вы введете motion в оболочке, вы увидите краткую инструкцию:

$ motion
Usage:
  motion [-h, --help]
  motion [-v, --version]
  motion <command> [<args…>]

Commands:
  create       Create a new project
  activate     Activate the software license
  update       Update the software
  support      Create a support ticket

Мы заинтересованы в motion create <Project Name>. Это позволит создать папку <Project Name> в текущем каталоге и заполнить ее важными файлами и папками, которые вам понадобятся для проекта RubyMotion.

С помощью motion create Smashing вы создаете свой первый проект. После ввода вы должны увидеть следующие:

$ motion create Smashing
    Create Smashing
    Create Smashing/.gitignore
    Create Smashing/Rakefile
    Create Smashing/app
    Create Smashing/app/app_delegate.rb
    Create Smashing/resources
    Create Smashing/spec
    Create Smashing/spec/main_spec.rb

Чтобы войти в каталог проекта используйте cd ./Smashing. Все последующие команды вы также будете запускать отсюда, поэтому удобнее будет держать этот каталог открытым в специальной вкладке или отдельном окне.

Давайте рассмотрим то, что создает эта команда

./Rakefile Этот файл, который использует команду rake, чтобы определить, доступные команды. RubyMotion также использует его для настройки таких опций как имя вашего приложения, ресурсы и исходный код расположения.

  • ./app Этот каталог содержит весь код. RubyMotion будет загружать в него любой *.rb файл, который он найдет. Вы можете указать дополнительные каталоги за пределами ./app в Rakefile.
  • ./app/app_delegate.rb Это непосредственно ваш кода. Он содержит куски вашего приложения. Далее мы подробнее его рассмотрим.
  • ./resources Файлы из этой папки будут скопированы в ваше приложение. Это место для хранения изображений, данных и иконок.
  • ./spec Эта директория для автоматизированных тестов вашего приложения. Любые *.rb файлы в данном каталоге будут тестироваться при вызове команды rake spec.
  • ./spec/main_spec.rb Это стандартный тест, такой же как в примере.

По сравнению с более серьезными аналогами, например, такие как Rails, RubyMotion не содержит большого количества конфигурации.  На данный момент нам необходимы файлы Rakefile и app_delegate.rb. Давайте подробнее их рассмотрим.

Начинаем разработку

Rakefile – это первый файл, который надо загрузить, когда вы начинаете разрабатывать приложение. Его задача заключается в настройке свойств вашего приложения и загрузке дополнительных файлов, которые могут понадобиться вашему проекту. По умолчанию, это выглядит примерно так:

# -*- coding: utf-8 -*-

$:.unshift("/Library/RubyMotion/lib")
require 'motion/project'

Motion::Project::App.setup do |app|
  # Use 'rake config' to see complete project settings.
  app.name = 'Smashing'
end

Вы, наверное, видели только $.unshift, если вы знакомы с Ruby. Он берет свой аргумент, в данном случае, /Library/RubyMotion/lib — и добавляет его в траекторию поиска. Это необходимо, потому что файл на самом деле находится в каталоге RubyMotion lib. Без unshift, код RubyMotion не будет найден.

motion/project каталог фактически позволяет написать приложения в RubyMotion. Он делает много вещей, невидимых невооруженным взглядом.  Так же он включает в себя модуль Motion::Project, который мы вскоре используем. Блок App.setup, где мы можем изменить имя нашего приложения, файлов, идентификаторы и многие другие параметры. Вы можете запустить rake config, чтобы увидеть все возможные свойства. По умолчанию, он использует имя Smashing для проекта, который мы передали в motion create.

При запуске rake, загрузится Rakefile. Требования motion/project фактически создает несколько rake задач. Эти задачи позволяют передавать аргументы rake, ссылаться на конкретные действия. Вы можете посмотреть полный список включенных задач, выполнив rake —tasks в каталоге вашего проекта:

$ rake --tasks
    rake archive              # Create archives for everything
    rake archive:development  # Create an .ipa archive for development
    rake archive:release      # Create an .ipa for release (AppStore)
    rake build                # Build everything
    rake build:device         # Build the device version
    rake build:simulator      # Build the simulator version
    rake clean                # Clear build objects
    rake config               # Show project config
    rake ctags                # Generate ctags
    rake default              # Build the project, then run the simulator
    rake device               # Deploy on the device
    rake simulator            # Run the simulator
    rake spec                 # Run the test/spec suite
    rake static               # Create a .a static library

Если внимательно посмотреть то, можно заметить, что rake делает совсем немного. Самое главное, если вы просто запустите rake, он будет запускать приложение в Simulator.

Выполните команду rake и сможете увидеть, как компилируются файлы вашего проекта. После того, как компиляция будет выполнена, по умолчанию ваше приложение (пока еще пустое) будет открыто в IOS Simulator:

iOS Simulator and terminal when first running RubyMotion

Кроме того, вы увидите, irb-esque prompt в оболочке. Это позволяет вам взаимодействовать с приложением в режиме реального времени без каких-либо дополнительных компиляций. Это свойство пригодится вам при отладке и быстрой разработки интерфейса. Попробуйте запустить несколько основных команд:

$ rake
  …

(main)> "a string"
=> "a string"
(main)> h = {hello: "motion"}
=> {:hello=>"motion"}
(main)> h
=> {:hello=>"motion"}

Наше приложение приближается к большому старту: мы установили RubyMotion, создали новый проект, узнали о функциях всех файлов и получили (пока пустое) работающие приложение. Далее, мы сделаем так, чтобы наше приложение показывало что-нибудь на экране.

Маленькие коробочки

Мы собираемся построить приложение, которое отображает цветные окна (коробочки) на экране. Звучит довольно просто, не так ли?

Кроме того мы оживим наше приложение с помощью изменений в цвете, используя Colr API. Эта программа использует сочетание разработанных Apple интерфейсов API, а также некоторые передовые работы с RubyMotion сообществ. Поэтому в процессе работы вы получите всесторонний опыт. Итак, у нас получилось следующее:

Box color changed via server data

Пример такой работы можно найти на Если вы хотите прочитать полностью статью, посетите сайт наших спонсоров

Comments are closed.