Setting Up Rails and Reservations for Development - YaleSTC/reservations GitHub Wiki

Notes on this guide

  • You should be running some sort of UNIX operating system, preferably NOT in a virtual machine.
  • For brevity, this guide only includes specific instructions for OSX and Ubuntu, but the Ubuntu instructions should work for most flavors of linux. (It may also include Arch Linux at a later date, because the installation process is slightly more involved than Ubuntu and will provide more assistance for people that don't use Ubuntu)
  • This guide also assumes you're using bash. If you don't know what that means, but you're running OSX or Linux, you're probably running bash; proceed.
  • If you're running OSX, first install xcode and then homebrew.
  • If you run into any issues during the setup process, please let me know so that I can update this guide!

A Text Editor

This can be a controversial subject, but if you don't already have a favorite text editor, we recommend installing Sublime, or, if you're feeling up to a challenge (and because the author of this guide is biased), learn to use vim.

MySQL

OSX

In a terminal, run

brew install mysql

When homebrew finishing installing, you'll set up MySQL to run at login:

ln -sfv /usr/local/opt/mysql/*plist ~/Library/LaunchAgents

...and then run it now:

launchctl load ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist

Note that, by default, the root MySQL user has no password (this will be important later when you're configuring Reservations).

Ubuntu

Install MySQL:

sudo apt-get install mysql-server mysql-client libmysqlclient-dev

Make a note of the root password that you enter during the install process, as this will be important later when you're configuring Reservations.

rbenv

OSX

Use homebrew to install rbenv, a ruby version manager:

brew install rbenv ruby-build

Setup rbenv to load every time you open a terminal:

echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
source ~/.bash_profile

Install a ruby version:

rbenv install 2.3.1

Set the default version to 2.3.1:

rbenv global 2.3.1

To make sure that rbenv is working, run which ruby The result should include .rbenv/shims/ruby

Ubuntu

Install some dependencies:

sudo apt-get update
sudo apt-get install git-core curl zlib1g-dev build-essential libssl-dev libreadline-dev libyaml-dev libsqlite3-dev sqlite3 libxml2-dev libxslt1-dev libcurl4-openssl-dev python-software-properties libffi-dev

Install rbenv:

git clone https://github.com/sstephenson/rbenv.git ~/.rbenv
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(rbenv init -)"' >> ~/.bashrc

Note that if you're not running Ubuntu, you should use bash_profile instead of bashrc.

Next, restart your terminal and run:

type rbenv

If it outputs rbenv is a function, you're all set.

Install ruby-build:

git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build

Install a ruby version:

rbenv install 2.3.1

Set the default version to 2.3.1:

rbenv global 2.3.1

To make sure that rbenv is working, run which ruby The result should include .rbenv/shims/ruby

Configuring Git

Run the following commands, replacing the placeholders with the information you use with github:

git config --global color.ui true
git config --global user.name "YOUR NAME"
git config --global user.email "[email protected]"

Next, set up an SSH key

Reservations

Finally, setting up the app itself! First, clone the repository:

git clone https://github.com/YaleSTC/reservations.git

Then copy some example config files:

cp config/database.yml.example.YOUR_OS config/database.yml
cp config/secrets.yml.example config/secrets.yml

Setup the database: edit the config/database.yml file to include your MySQL root password for all environments:

development:
  adapter: mysql2
  encoding: utf8
  reconnect: false
  database: reservations_development
  pool: 5
  username: root
  password: YOUR_MYSQL_PASSWORD
  socket: /var/run/mysqld/mysqld.sock
  host: localhost

# Warning: The database defined as "test" will be erased and
# re-generated from your development database when you run "rake".
# Do not set this db to the same as development or production.
test:
  adapter: mysql2
  encoding: utf8
  reconnect: false
  database: reservations_test
  pool: 5
  username: root
  password: YOUR_MYSQL_PASSWORD
  socket: /var/run/mysqld/mysqld.sock

production:
  adapter: mysql2
  encoding: utf8
  reconnect: false
  database: reservations_production
  pool: 5
  username: root
  password: YOUR_MYSQL_PASSWORD
  socket: /var/run/mysqld/mysqld.sock

(Note that using the root user isn't the best practice, but this is a guide designed for beginners and using the root user is much simpler.)

Install ruby 2.3.1:

rbenv install 2.3.1

Install bundler:

gem install bundler

Install required gems:

bundle install

Use rake to build the database:

rake db:create
rake db:migrate
rake db:reset

(Note that the last command populates the database through our seed script.)

Run Reservations:

rails s

Optional Plugins

rbenv-binstubs

Never type bundle exec again!

mkdir -p ~/.rbenv/plugins
cd ~/.rbenv/plugins
git clone https://github.com/ianheggie/rbenv-binstubs.git 

Then, in your reservations directory:

bundle install --binstubs .bundle/bin rbenv rehash

rbenv-gem-rehash

Never run rbenv rehash again!

git clone https://github.com/sstephenson/rbenv-gem-rehash.git ~/.rbenv/plugins/rbenv-gem-rehash

Thank you to this OSX rails install guide, and this Ubuntu rails install guide; most of the content of this article is pieced together from them.