zhlifly / lottadot-restkit-ios-rails3-1-advanced

iOS iPhone App with Ruby Rails 3.1 using JSON and Restkit

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Introduction

This project is a test-example-project for an iOS iPhone app that communicates with a Ruby on Rails based backend. It uses iOS5 SDK, Ruby 1.92, Rails 3.1 and RestKit.

The goal was to create a super simple (small) iOS app that uses Storyboards and is able to pull and create objects with the website over JSON. All using RestKit and CoreData best practices.

The datamodel is inspired by Pierre Martin's questions on the RestKit Google Group:

Bascially it is:

  • topic has_many posts
  • post belongs_to a topic
  • post belongs_to an author
  • author has_many posts

I used Restkit HEAD.

Installation

Quick Start (aka TL;DR)

(clone the repo):

cd lottadot-restkit-ios-rails3-1-advanced
```console

(update the git submodule that points to Restkit):

```console
git submodule update --init --recursive
```console

(start the rails app in a terminal window):

```console
cd ldtrkpoc2svr
```console

(if you use RVM:)
```console
rvm use ruby-1.9.2-p290@ldtrkpoc2svr
```console

(If you see something like 'report_activate_error' you'll have to do 'gem install rails'. If you see something about gemset doesn't exist, then follow rvm's instructions to install the new gemset (ie rvm --create use ruby-1.9.2-p290@ldtrkpoc2svr ), and don't forget to 'gem install rails' when it's finished.)

```console
bundle install
rake db:migrate
rake db:seed
rails s
```console

Open a web browser and open [http://lvh.me:3000/](http://lvh.me:3000/)

Try it out
=========================
open the xcode project.
run it.

You should see 

[![](http://dl.dropbox.com/u/212730/lottadot-restkit-ios-rails3-1-advanced_screenshot.png)](http://dl.dropbox.com/u/212730/lottadot-restkit-ios-rails3-1-advanced_screenshot.png)

If you press the 'add one' button it should contact the website, create a new Topic on the website. After creating it should update the UITableView so you see the new Topic.

---
###Optional

If you'd like to "load test", you can generate random-topic-data (default is 150 records) Run:

```console
rake myapp:load:random_topics
```console

---
###TODO

* iOS: add code to let you cancel an attempt to add a new Topic
* iOS: re-do the TopicEditor and decouple it.
* iOS: add code to let you edit/delete a topic (which would cascade to delete it's posts)
* iOS: add code to let you create/edit/delete a new post
* website: Login/out of the website (maybe with Devise in the RoR app)
* iOS: force the user to authenticate, then when creating posts associate the user/"author" with it.

Contributing
-------------------------

Forks, patches and other feedback are always welcome. Please for it and submit a pull request.

Credits
-------------------------

* RestKit is brought to you by [Blake Watters](http://twitter.com/blakewatters) and the RestKit team.
* CoreDataTableViewController is brought to you by [Stanford CS193p Fall 2011](http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewPodcast?id=480479762)

About

iOS iPhone App with Ruby Rails 3.1 using JSON and Restkit