James Sa home

Helios 提供了 iOS apps 一個很好的後台框架,當然是用好用的 Ruby,如果你還不會,試試 Ruby 吧。Notification, Password 當然有,但特別的是它做了一個我很有興趣的嘗試,Client & Server 之間資料同步的 Do not Repeat Yourself (DRY)的功能。

在開發 iOS app 時,一個常遇到的問題就是,Core Data 的資料變動後,要同步回遠端的伺服器。比較好的解法是,先在 background thread 寫入 Core Data, 有空時再把資料同步到伺服器。AFNetworking & AFIncrementalStore 就是把這兩件事做得很好的 Library。

Helios 有趣的地方來了,它會讀取你的 Core Data 的 Schema, 然後在 Postgres 裡面,建立相對應的 Schema 還有基本的 API 呼叫,只要 30 分鐘,你就有免費的後台了,Restful 的 GET/POST/PUT/DELETE 全部都有了。

需要 - Ruby 2.0 stable 2.0.0-p247, HEAD - PostgreSQL stable 9.2.4 - Homebrew

下面操作的來源是 https://github.com/helios-framework/helios ,但是我更新了一些環境上的設定

在 OS X 上面安裝

  1. 檢查 Ruby ruby -v ruby 2.0.0p247 (2013-06-27 revision 41674) [x86_64-darwin12.3.0]

  2. 安裝 Helios gem install helios 如果失敗的話,加上 brew install libxml2 libxslt export NOKOGIRI_USE_SYSTEM_LIBRARIES=1 gem install helios Credit Zekus

  3. 建立一個 Helios app helios new myapp

  4. 建立 Postgres 資料庫 createdb -h localhost myapp 如果不行 createdb: could not connect to database template1: could not connect to server: Connection refused Is the server running on host "localhost" (::1) and accepting TCP/IP connections on port 5432? 就手動起始 Postgres pg_ctl -D /usr/local/var/postgres -l logfile start createdb -h localhost myapp

  5. 啓動 web server $ cd myapp $ helios server

  6. 打開 http://localhost:5000/admin/,你應該可以看到 Helios 太空色調的 UI 了。

接下來,就是把 Core Data model 跟 Helios 整合起來,這邊我就沒遇到什麼問題了,照個 Helios 使用說明 還有 iOS Core Data buildpack 做就行了,有卡關的,歡迎投書,我再把它補上。

我用的 Podfile platform :ios, "7.0" pod "AFNetworking" pod "AFIncrementalStore"

最後的完成品 Screen Shot 2013-08-20 at 6.40.08 PM.png Live Demo

PS. 給那些每天在 Core Data, Client-Server 同步在奮戰的朋友們。順便找個機會用用傳說中好用的不得了的 logdown. 我一個小時就寫好這篇了。