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 ,但是我更新了一些環境上的設定
檢查 Ruby
ruby -v
ruby 2.0.0p247 (2013-06-27 revision 41674) [x86_64-darwin12.3.0]
安裝 Helios
gem install helios
如果失敗的話,加上
brew install libxml2 libxslt
export NOKOGIRI_USE_SYSTEM_LIBRARIES=1
gem install helios
Credit Zekus
建立一個 Helios app
helios new myapp
建立 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
啓動 web server
$ cd myapp
$ helios server
打開 http://localhost:5000/admin/,你應該可以看到 Helios 太空色調的 UI 了。
接下來,就是把 Core Data model 跟 Helios 整合起來,這邊我就沒遇到什麼問題了,照個 Helios 使用說明 還有 iOS Core Data buildpack 做就行了,有卡關的,歡迎投書,我再把它補上。
我用的 Podfile
platform :ios, "7.0"
pod "AFNetworking"
pod "AFIncrementalStore"
最後的完成品 Live Demo
PS. 給那些每天在 Core Data, Client-Server 同步在奮戰的朋友們。順便找個機會用用傳說中好用的不得了的 logdown. 我一個小時就寫好這篇了。