A guide for getting things done.
Install the latest version of Xcode from the App Store.
gem install suspenders
Create the app.
suspenders app --heroku true --github organization/app
Create a new project in Xcode with these settings:
- Check 'Create local git repository for this project'.
- Check 'Use Automatic Reference Counting'.
- Set an appropriate 2 or 3 letter class prefix.
- Set the Base SDK to 'Latest iOS'.
- Set the iOS Deployment Target to 6.0.
- Use the Apple LLVM compiler.
gem install liftoff
Run liftoff in the project directory.
Get the code.
git clone firstname.lastname@example.org:organization/app.git
Set up the app's dependencies.
cd project ./bin/setup
Use Heroku config to get
heroku config:pull -r staging
Delete extra lines in
.env, leaving only those needed for app to function
properly. For example:
Use Foreman to run the app locally.
It uses your
.env file and
Procfile to run processes just like Heroku's
Create a local feature branch based off master.
git checkout master git pull --rebase git checkout -b your-initials-new-feature
Rebase frequently to incorporate upstream changes.
git fetch origin git rebase origin/master <resolve conflicts>
When feature is complete and tests pass, commit the changes.
rake git add -A git status git commit -v
Write a good commit message. Example format:
Present-tense summary under 50 characters * More information about commit (under 72 characters). * More information about commit (under 72 characters). http://project.management-system.com/ticket/123
Share your branch.
git push origin [branch]
Submit a Github pull request.
Ask for a code review in Campfire.
A team member other than the author reviews the pull request. They follow Code Review guidelines to avoid miscommunication.
They make comments and ask questions directly on lines of code in the Github web interface or in Campfire.
For changes which they can make themselves, they check out the branch.
git checkout <branch> rake db:migrate rake git diff staging/master..HEAD
They make small changes right in the branch, test the feature in browser, run tests, commit, and push.
When satisfied, they comment on the pull request
Ready to merge.
Rebase interactively. Squash commits like "Fix whitespace" into one or a small number of valuable commit(s). Edit commit messages to reveal intent.
git rebase -i origin/master rake
View a list of new commits. View changed files. Merge branch into master.
git log origin/master..[branch] git diff --stat origin/master git checkout master git merge [branch] --ff-only git push
Delete your remote feature branch.
git push origin :[branch]
Delete your local feature branch.
git branch -d [branch]
View a list of new commits. View changed files. Deploy to Heroku staging.
git fetch staging git log staging/master..master git diff --stat staging/master git push staging master
Run migrations (if necessary).
heroku run rake db:migrate -r staging
Restart the dynos if migrations were run.
heroku restart -r staging
Introspect to make sure everything's ok.
watch heroku ps -r staging
Test the feature in browser.
Deploy to production.
git fetch production git log production/master..master git diff --stat production/master git push production master heroku run rake db:migrate -r production heroku restart -r production watch heroku ps -r production
Watch logs and metrics dashboards.
Close pull request and comment