Clean Ruby on Rails install met Lion - Deel 2 - Rails & Co

Geplaatst op 18/10/2011 in OSX

In mijn vorige Atom heb ik laten zien hoe je Lion kunt installeren op een externe harde schijf. Het is nu tijd om Ruby on Rails erop te installeren. En dit wordt niet een heel simpele Rails installatie. We gaan namelijk gelijk ImageMagick, MySQL, rbenv en ruby-build erop zetten.

  1. Lion installeren
  2. Rails & Co
  3. Applicaties installeren
  4. Configureren en overzetten

1. XCode

Het allereerste wat je moet doen is XCode installeren op je nieuwe harde schijf. Hierin zitten een aantal compilers die je nodig hebt om bepaalde software te installeren. XCode kun je gratis downloaden in de App Store. Het is een kwestie van downloaden en installeren. Het is echter vrij groot, dus het kan een tijdje duren. Het handige aan de nieuwste versie van XCode is dat er ook gelijk ‘git’ bij wordt geïnstalleerd. Hoeven we dat niet handmatig te doen. En als je ooit iOS of Mac development wilt doen zit je gelijk gebakken. ;)

Geen zin om XCode te downloaden? Dan kun je de volgende Github repo bekijken: osx-gcc-installer. Je moet dan wel handmatig git installeren.

2. Homebrew <3

Het volgende wat we gaan installeren is Homebrew. Hiermee kun je erg gemakkelijk software als MySQL en ImageMagick installeren. Enige nadeel (voor sommigen echter een voordeel) is dat je alles vanuit de Terminal moet gaan doen.

Om Homebrew te installeren moet je het volgende uitvoeren in de Terminal:

/usr/bin/ruby -e "$(curl -fsSL https://raw.github.com/gist/323731)"

Als dit is gedaan kunnen we doorgaan naar de volgende stap en Homebrew daadwerkelijk gebruiken.

3. ImageMagick

Nu we Homebrew hebben geïnstalleerd is het vrij gemakkelijk om ImageMagick te installeren. Vroeger moest je een heel lang script draaien om het te installeren, maar tegenwoordig is het maar één regel:

brew install imagemagick

En je bent klaar om ImageMagick te gebruiken!

4. MySQL

MySQL installeren kan op verschillende manieren. Ten eerste kun je het downloaden van de MySQL website. Download de DMG met de 64 bit versie. Het is dan een kwestie van alle installers in de DMG uit te voeren. Er is echter een extra manier nu we Homebrew hebben geïnstalleerd. Ik gebruik deze manier veel liever, aangezien je niet iets extra’s in je ~/.bash_profile moet doen om het te laten werken met Rails (hier later meer over).

Het is helaas niet zo simpel als ImageMagick installeren. We moeten een paar extra dingen doen. Allereerst moeten we MySQL installeren:

brew install mysql

Als dit is gedaan moeten we de database aanmaken:

mysql_install_db --verbose --user='root' --basedir="$(brew --prefix mysql)" --datadir=/usr/local/var/mysql --tmpdir=/tmp

Als dit is gedaan moeten we ervoor zorgen dat MySQL automatisch wordt opgestart. Hiervoor kun je de volgende drie commands uitvoeren in de Terminal:

mkdir -p ~/Library/LaunchAgents
cp /usr/local/Cellar/mysql/5.5.15/com.mysql.mysqld.plist ~/Library/LaunchAgents/
launchctl load -w ~/Library/LaunchAgents/com.mysql.mysqld.plist

En nu hoort MySQL te werken. Let wel op dat je de juiste versie van MySQL opgeeft in het tweede commando. Ik heb hier 5.5.15 staan, maar dit kan in de toekomst uiteraard veranderen.

5. rbenv en ruby-build

Misschien kennen jullie RVM al. Hiermee kun je gemakkelijk verschillende Ruby versies gebruiken. Naast RVM heb je tegenwoordig ook rbenv. Ik was erg tevreden met RVM, maar heb er uiteindelijk toch voor gekozen om rbenv te gaan gebruiken. Er zitten namelijk een hoop functies in RVM die ik nooit gebruik. Rbenv is een stuk lichter en heeft alleen de functies die ik echt nodig heb: tussen Ruby versies wisselen. Ik vind die andere functies niet nodig en gebruik dan liever een simpelere variant. Vandaar deze keuze.

Maar hoe krijg je rbenv geïnstalleerd? Homebrew to the rescue!

brew install rbenv

Je kunt nu handmatig Ruby versies installeren. Dat willen wij natuurlijk niet. Gelukkig hebben we hier nog iets voor: ruby-build. Dit is door dezelfde programmeur gemaakt en haakt goed in op rbenv. Ook dit kun je via Homebrew installeren:

brew install ruby-build

We moeten nog wel wat in ~/.bash_profile stoppen. Als je dit bestand niet hebt (zit dus in de map van de huidige gebruiker) kun je deze handmatig aanmaken. Stop het volgende erin:

eval "$(rbenv init -)"

Nu we dit hebben gedaan kunnen we Ruby gaan installeren. Laten we eerst kijken wat we allemaal kunnen installeren.

ruby-build --definitions

Je krijgt een lijst zoals hieronder te zien:

1.8.6-p420
1.8.7-p249
1.8.7-p352
1.9.1-p378
1.9.2-p290
1.9.3-dev
1.9.3-preview1
1.9.3-rc1
jruby-1.6.3
jruby-1.6.4
rbx-1.2.4
rbx-2.0.0-dev
ree-1.8.6-20090610
ree-1.8.7-2010.02
ree-1.8.7-2011.03

Wij gaan 1.9.2 en 1.8.7 installeren. Als je wilt kun je uiteraard een andere versie installeren.

rbenv install 1.8.7-p352
rbenv install 1.9.2-p290

Dit kan een tijdje duren. Als je klaar bent met het installeren van een nieuwe Ruby versie moet je het volgende doen:

rbenv rehash

Als dit is gedaan kunnen we een Ruby versie als standaard zetten:

rbenv global 1.9.2-p290

Wil je kijken welke versie je gebruikt? Dan kunnen we het volgende doen:

rbenv versions

Wil je het 100% zeker weten?

ruby -v

Gefeliciteerd! Je hebt Ruby geïnstalleerd!

6. RubyGems

RubyGems is standaard geïnstalleerd als je een Ruby versie installeert met rbenv. Wil je echter een andere RubyGems versie gebruiken? Dan kun je het volgende doen:

gem install -v 1.3.7 rubygems-update && \
ruby `gem env gemdir`/gems/rubygems-update-1.3.7/setup.rb

Nu zal versie 1.3.7 worden geïnstalleerd. Het is dus niet per se nodig, maar als het moet, is het dus mogelijk.

7. Bundler en Rails

We kunnen nu bundler installeren om gems te bundelen en Rails om applicaties te maken. Als eerste gaan we Bundler installeren:

gem install bundler --no-ri --no-rdoc

Het kan zo zijn dat je sudo hiervoor moet zetten als je de rechten niet hebt. Ik had hier niet echt last van, maar als je dus zo'n soort melding krijgt: sudo ervoor zetten. En ik zet er --no-ri en --no-rdoc na om de documentatie over te slaan. Het installeren van deze documentatie duurt namelijk erg lang en is overbodig. We hebben hier het internet voor.

Nu bundler is geïnstalleerd kunnen we Rails gaan installeren. Dit kan een tijdje duren.

gem install rails --no-ri --no-rdoc

Nu Rails is geïnstalleerd kunnen we een Rails applicatie maken. Laten we de 45north_template gebruiken om dit voor elkaar te krijgen. Stop het volgende in ~/.bash_profile:

function rails3() { 
  curl "https://raw.github.com/45north/45north_template/master/generate_template" | bash -s "$@";
  cd "$@";
}

Als je nu de Terminal opnieuw opstart kunnen we het rails3 script gebruiken om een Rails applicatie te maken. Ga in de Terminal naar de map waar je alle applicaties wilt bewaren (bijvoorbeeld ~/Sites). Voer het volgende uit:

rails3 gem_install_app

Dit is een applicatie om allerlei gems voor je te installeren. Hierin zit namelijk een Gemfile vol met leuke gems die we bij 45north gebruiken. Deze zullen tijdens het uitvoeren van het script automatisch worden geïnstalleerd. Je bent dus klaar om Rails te gebruiken!

8. .bash_profile

Het laatste wat we nog moeten doen is de bash_profile vullen. Hierin hebben we al een paar dingen gestopt, dus als het goed is moet je dit bestand al hebben. We gaan er nu wat extra dingen instoppen om wat gemakkelijker bepaalde scripts aan te roepen.

Voordat we dit gaan doen heb ik nog een paar opmerkingen. Als je MySQL via de DMG hebt geïnstalleerd moet je wat extra’s in bash_profile stoppen:

export PATH="/usr/local/mysql/bin:$PATH"
export DYLD_LIBRARY_PATH=/usr/local/mysql/lib/

Als je het via Homebrew hebt gedaan is dit niet nodig.

Heb je rbenv niet via Homebrew geïnstalleerd? Dan moet je, naast eval "$(rbenv init -)", het volgende in bash_profile stoppen:

export PATH="$HOME/.rbenv/bin:$PATH"

Dan kunnen we nu bash_profile gaan vullen. Het eerste wat je in bash_profile kunt stoppen zijn afkortingen van Rails scripts:

# Rails scripts
alias controller="rails g controller"
alias model="rails g model"
alias mailer="rails g mailer"
alias migration="rails g migration"
alias rs="rails server"
alias rc="rails console"
alias destroy="rails destroy"

Hetgeen tussen alias en het is-teken kun je aanroepen in de Terminal om hetgeen tussen aanhalingstekens uit te voeren.

Om de database e.d. te beheren kun je ook wat afkortingen toevoegen:

# Rake
alias rdm="bundle exec rake db:migrate"
alias rdr="bundle exec rake db:rollback"
alias rdc="bundle exec rake db:create"
alias rdca="bundle exec rake db:create:all"
alias rds="bundle exec rake db:seed"

Dan zijn er nog wat speciale commands die je kunt toevoegen:

# Terminal commands
alias show='defaults write com.apple.Finder AppleShowAllFiles TRUE && killall Finder'
alias hide='defaults write com.apple.Finder AppleShowAllFiles FALSE && killall Finder'
alias clear='sudo rm -rf /private/var/log/asl/*.asl'
alias root='cd ~'
alias bash_profile='mate ~/.bash_profile'

De show alias laat alle verborgen bestanden in de Finder zien en hide verbergt deze weer. De clear alias maakt de Terminal iets sneller, root zorgt ervoor dat je naar de map van de huidige gebruiker gaat en bash_profile opent ~/.bash_profile in TextMate. Moet je wel even TextMate installeren. Dit zal ik in de volgende Atom behandelen.

Dan hebben we nog een aantal rbenv commands waardoor we gemakkelijker kunnen wisselen tussen Ruby versies.

# rbenv
alias 1.9.2='rbenv global 1.9.2-p290'
alias 1.8.7='rbenv global 1.8.7-p352'
alias local_1.9.2='rbenv local 1.9.2-p290'
alias local_1.8.7='rbenv local 1.8.7-p352'

Gebruik je de Flash debug player? Dan kunnen we op een gemakkelijke manier de log in de Terminal benaderen met de volgende twee commands:

# Flash debugger
alias trace='tail -f /Users/JouwNaam/Library/Preferences/Macromedia/Flash\ Player/Logs/flashlog.txt'
alias cleartrace='cat /dev/null > /Users/JouwNaam/Library/Preferences/Macromedia/Flash\ Player/Logs/flashlog.txt'

Je hebt nu een gevulde bash_profile die het werken met Rails en andere zaken een stuk gemakkelijker maakt. Vergeet niet de Terminal opnieuw te starten als je iets aanpast in bash_profile!

Klaar!

Dat was dan deel 2 van deze serie Atoms. In de volgende Atom zal ik de applicaties behandelen die je, volgens mij, moet installeren op je Mac. Het lastigste gedeelte van deze serie is in ieder geval achter de rug.

Ik heb een paar bronnen gebruikt om deze Atom in elkaar te zetten:

Comments (0)

Place a new comment

To place a comment, please log in via:
Het is snel en gemakkelijk. Kies een website waarmee je wilt inloggen en je kunt meteen reageren. Geen gedoe met wachtwoorden en een speciaal account bij ons.
Deze website maakt veelvuldig gebruik van JavaScript. U heeft dit uitstaan.