2/6/2013 - 11:00 PM


# 0. Make sure you have Ruby 1.9.3 installed, and optionally RVM and PostgreSQL

# 0.2 If you are on the Mac, make sure you have a c compiler by installing XCode Command Line Tools or gcc4.2 with homebrew
# https://github.com/mxcl/homebrew/wiki/Custom-GCC-and-cross-compilers

# 0.5 Make sure you have bundler version ~> 1.2 as Rails depends on it
gem install bundler

# 1. Get edge Rails source (master branch)
git clone https://github.com/rails/rails.git

# 2. Create the rails app
# The --edge option will point the Gemfile to rails on github (the tip of the master branch, i.e. EdgeRails)
# Use the --dev option to insated point your Gemfile to your local rails checkout (useful for experimentation)
rails/railties/bin/rails new myapp --edge --skip-bundle --database=postgresql --skip-test-unit --skip-index-html

# 3. (Optional) Create rvm gemset on Ruby 1.9.3 (Rails 4 requires Ruby 1.9.3)
# This step will isolate the gem dependencies of the app from other gems installed on your system
rvm --rvmrc --create 1.9.3@myapp

# 4. (Optional) Install gem dependencies and put binaries under ./bin
# If you skip this step you need to prefix commandline commands with "bundle exec"
# NOTE: I had to do the following on my mac for the gcc compiler to be found when the json gem was installed:
# sudo ln -s /usr/bin/llvm-gcc-4.2 /usr/bin/gcc-4.2
bundle install --binstubs

# 5. Set up PostgreSQL database
createuser myapp
bin/rake db:create

# 6. Scaffold some model to test that the app works
bin/rails generate scaffold Post title:string body:text
bin/rake db:migrate
bin/rails server
# Add root to: 'posts#index' in config/routes.rb
open http://localhost:3000

# 7. Create repo on github
# Browse to http://github.com to click the "New repository" button
git init
git add .
git commit -m "First commit"
git remote add origin git@github.com:peter/myapp.git # use the URL from github here
git push -u origin master

# 8. Deploy to Heroku
gem install bundler --pre # Needed to specify ruby 1.9.3 for Heroku
# Add gem 'thin' to Gemfile # Typical web server for Heroku deploy
# Add ruby '1.9.3' to Gemfile (after the source directive)
# Add config.assets.initialize_on_precompile = false to config/application.rb # Avoid db connect on asset precompile
RAILS_ENV=production bin/rake assets:precompile
# (See https://devcenter.heroku.com/articles/rails3x-asset-pipeline-cedar for more info)
# NOTE: to get eventmachine (thin dependency) to install on my Mac (Mountain Lion) I had to do:
# sudo ln -s /usr/bin/llvm-g++-4.2 /usr/bin/g++-4.2
# See: https://github.com/eventmachine/eventmachine/issues/325
bundle install
echo "web: bundle exec rails server thin -p \$PORT -e \$RACK_ENV" > Procfile
git add .; git commit -m "Preparations for Heroku deploy"; git push
heroku apps:create peter-myapp # myapp was taken...
git push heroku master
heroku run rake db:migrate
heroku restart
heroku apps:open
heroku logs --tail