We will be setting up a Ruby on Rails development environment on Ubuntu 13.10 Saucy Salamander.
The reason we're going to be using Ubuntu is because the majority of code you write will run on a Linux server. Ubuntu is one of the easiest Linux distributions to use with lots of documentation so it's a great one to start with.
You'll want to download the latest Desktop version here: http://releases.ubuntu.com/saucy/
Some of you may choose to develop on Ubuntu Server so that your development environment matches your production server. You can find it on the same download link above.
The first step is to install some dependencies for Ruby.
Keep in mind that we want to write code as a regular user and you should make sure to follow the rest of steps as that user and not root.
You can add a new user and then add him to the admin group like so:
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
Next we're going to be installing Ruby using one of three methods. Each have their own benefits, most people prefer using rbenv these days, but if you're familiar with rvm you can follow those steps as well. I've included instructions for installing from source as well, but in general, you'll want to choose either rbenv or rvm.
Choose one method. Some of these conflict with each other, so choose the one that sounds the most interesting to you, or go with my suggestion, rbenv.
rbenv is a simple two step process. First you install
rbenv, and then
cd git clone git://github.com/sstephenson/rbenv.git .rbenv echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc echo 'eval "$(rbenv init -)"' >> ~/.bashrc exec $SHELL git clone git://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build echo 'export PATH="$HOME/.rbenv/plugins/ruby-build/bin:$PATH"' >> ~/.bashrc exec $SHELL rbenv install 2.0.0-p353 rbenv global 2.0.0-p353 ruby -v
The installation for
rvm is pretty simple:
sudo apt-get install libgdbm-dev libncurses5-dev automake libtool bison libffi-dev curl -L https://get.rvm.io | bash -s stable source ~/.rvm/scripts/rvm echo "source ~/.rvm/scripts/rvm" >> ~/.bashrc rvm install 2.0.0-p353 rvm use 2.0.0-p353 --default ruby -v
Arguably the least useful Ruby setup for development is installing from source, but I thought I'd give you the steps anyways:
cd wget http://ftp.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p353.tar.gz tar -xzvf ruby-2.0.0-p353.tar.gz cd ruby-2.0.0-p353/ ./configure make sudo make install ruby -v
The last step is to tell Rubygems not to install the documentation for each package locally
echo "gem: --no-ri --no-rdoc" > ~/.gemrc
We'll be using Git for our version control system so we're going to set it up to match our Github account. If you don't already have a Github account, make sure to register. It will come in handy for the future.
Replace my name and email address in the following steps with the ones you used for your Github account.
git config --global color.ui true git config --global user.name "Chris Oliver" git config --global user.email "firstname.lastname@example.org" ssh-keygen -t rsa -C "email@example.com"
The next step is to take the newly generated SSH key and add it to your Github account. You want to copy and paste the output of the following command and paste it here.
Once you've done this, you can check and see if it worked:
ssh -T firstname.lastname@example.org
You should get a message like this:
Hi excid3! You've successfully authenticated, but GitHub does not provide shell access.
To install NodeJS, we're going to add it using a PPA repository:
sudo add-apt-repository ppa:chris-lea/node.js sudo apt-get update sudo apt-get install nodejs
And now, without further adieu:
gem install rails
If you're using rbenv, you'll need to run the following command to make the rails executable available:
Now that you've installed Rails, you can run the
rails -v command to make sure you have everything installed correctly:
rails -v # Rails 4.0.0
If you get a different result for some reason, it means your environment may not be setup properly.
Rails ships with sqlite3 as the default database. Chances are you won't want to use it because it's stored as a simple file on disk. You'll probably want something more robust like MySQL or PostgreSQL.
There is a lot of documentation on both, so you can just pick one that seems like you'll be more comfortable with. If you're coming from PHP, you may already be familiar with MySQL. If you're new to databases, I'd suggest skipping to setting up PostgreSQL.
You can install MySQL server and client from the packages in the Ubuntu repository. As part of the installation process, you'll set the password for the root user. This information will go into your Rails app's
database.yml file in the future.
sudo apt-get install mysql-server mysql-client libmysqlclient-dev
libmysqlclient-dev gives you the necessary files to compile the
mysql2 gem which is what Rails will use to connect to MySQL when you setup your Rails app.
When you're finished, you can skip to the Final Steps.
For PostgreSQL, we're going to add a new repository to easily install a recent version of Postgres 9.2. Since there isn't an official Postgres repository for Ubuntu 13.10, we have to use a small work-around:
sudo sh -c "echo 'deb http://apt.postgresql.org/pub/repos/apt/ precise-pgdg main' > /etc/apt/sources.list.d/pgdg.list" wget --quiet -O - http://apt.postgresql.org/pub/repos/apt/ACCC4CF8.asc | sudo apt-key add - sudo apt-get update sudo apt-get install postgresql-common -t saucy sudo apt-get install postgresql-9.2 libpq-dev
The postgres installation doesn't setup a user for you, so you'll need to follow these steps to create a user. Feel free to replace
chris with your username.
sudo -u postgres createuser chris # If you would like to set a password for the user, you can do the following sudo -u postgres psql postgres=# \password chris
And now for the moment of truth. Let's create your first Rails application:
rails new myapp #### If you want to use MySQL rails new myapp -d mysql #### If you want to use Postgres # Note that this will expect a postgres user with the same username # as your app, you may need to edit config/database.yml to match the # user you created earlier rails new myapp -d postgresql # Move into the application directory cd myapp # If you setup MySQL or Postgres with a username/password, modify the # config/database.yml file to contain the username/password that you specified # Create the database rake db:create rails server
You can now visit http://localhost:3000 to view your new website!
Now that you've got your machine setup, it's time to start building some Rails applications.
If you received an error that said
Access denied for user 'root'@'localhost' (using password: NO) then you need to update your config/database.yml file to match the database username and password.