Skip to content


Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Free Objectivist Books
branch: master

This branch is 454 commits behind jasoncrawford:master

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.

Free Objectivist Books

This is the code for

The purpose of this site is to match up students who want to read Objectivist books with donors who are willing to send them. The goal is to get more students reading Ayn Rand.

Free Objectivist Books is a community project. It lives at:

This README is a guide for developers who want to help out.

How to help

  1. Read this README
  2. Fork the repo
  3. Browse issues and milestones; find an issue to tackle, or add one of your own
  4. Assign the issue to yourself
  5. Code it up, including tests
  6. Send me a pull request
  7. I'll review it, pull it, and deploy
  8. Go to step 3

Developer setup

Here's how to get yourself set up to develop the app:

  1. Make sure you have Ruby 1.9.2 installed (on a Mac, you may have 1.8 by default). Check with ruby -v. If you need to install or upgrade Ruby, I recommend RVM:
  2. Make sure you have Bundler installed: Try bundle -v and do gem install bundler if needed.
  3. Fork the repo at, then clone it with git clone.
  4. Once you have the repo locally, you should be able to run bundle in the project directory, and it will install all the dependencies (including Rails 3.1.3 if you don't already have it).
  5. Install Foreman if needed: gem install foreman. Then you can run the app using foreman start. That runs both the server and a delayed_jobs worker thread. (This will run the app at port 5000, not 3000 as is the default when you run rails server.) Go to http://localhost:5000 to see the app.
  6. To make sure everything is working, run rake test to run all the tests.

Let me know if you have any trouble at all getting set up; I'm happy to help, and I'll update these instructions for the next developer, as well.

Developer guidelines

  • Use GitHub to manage workflow: issues, pull requests, etc.
  • Follow Ruby & Rails conventions.
  • Develop for Ruby 1.9.2 (it's what we use in production on Heroku).
  • Write fat models and skinny controllers.
  • Write tests for everything. We should be able to deploy with confidence without manual regression testing. Run the tests (with rake test) and make sure they're all green before submitting a pull request.
  • Write brief class-level and (where appropriate) method-level comments suitable for RDoc.
  • Create custom Rake tasks for any management commands, including any scheduled tasks.
  • Use delayed jobs for any long-running task that can be done in the background.
  • Long-running scheduled tasks should also be put in the delayed job queue.

A few practical tips

  • Documentation is available (via RDoc); find it in doc/app/index.html and regenerate it with rake doc:app.
  • We use Delayed::Jobs for long-running tasks. Worth reading up on if you're touching notifications/reminders.
  • We're using the 960 Grid System: You may want to familiarize yourself with it if you're touching views.
  • Do your best work, and have fun!
Something went wrong with that request. Please try again.