Starten met een Rails-project kan wat verwarrend zijn als je dit nog nooit eerder gedaan hebt. Dit artikel bevat een overzicht tot de benodigde software en de stappen waarin je deze best installeert.
Rails is een Ruby web framework en vereist dan ook een Ruby installatie. Omdat verschillende projecten verschillende Ruby versies kunnen gebruiken is het handig meerdere Ruby versies naast elkaar te kunnen draaien. Wij raden rbenv aan aangezien het een stuk eenvoudiger (en probleemlozer werkt) dan rvm. Rbenv installeer je op de volgende manier:
Op beide platformen moet rbenv worden opgestart bij het openen van de shell, dit kan op de volgende manier (vervang .bash_profile
door je favoriete shell zijn profile of rc):
echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
Na installatie en herladen van de shell zou type rbenv
rbenv is a function
of iets dergelijks moeten geven.
Het installeren van een nieuwe Ruby versie kan aan de hand van rbenv install [versie]
(bv. rbenv install 2.2.2
). De volledige lijst van mogelijke versies kan bekomen worden aan de hand van het commando rbenv install -l
.
Rbenv zal normaal de globaal ingestelde Ruby versie gebruiken, tenzij de gebruiker (of het project) een andere versie specifieert door middel van een .ruby-version
bestand met daarin het versienummer. Dit laatste kan door rbenv shell [versie]
worden overschreven voor de huidige shell sessie. De globale Ruby versie kan worden aangepast door rbenv global [version]
.
Sommige Ruby versions kunnen bij het builden beginnen klagen over het niet gedefinieerd zijn van `SSLv3_method`. De fix hiervoor kan men vinden op de Arch wiki.
Rbenv op Windows wordt niet gedaan, de installatie van Ruby kan via RubyInstaller for Windows.
Net zoals rbenv de versie van je Rails project beheert, beheert Bundler per project de verschillende versies van dependencies en gems. Wanneer bijvoorbeeld twee verschillende projecten twee verschillende versies van dezelfde gem gebruiken, zorgt Bundler dat deze netjes naast elkaar kunnen gebruikt worden.
Installatie van Bundler is zo simpel als gem instal –user-install bundler
. Houd er rekening mee dat geïnstalleerde gems afhankelijk zijn van de door rbenv geactiveerde Ruby, het kan dus zijn dat je dit commando opnieuw moet uitvoeren na het installeren van een nieuwe Ruby versie.
Gems worden per project gespecifieerd in de Gemfile
. Meer informatie over deze Gemfile kan hier worden verkregen.
Wanneer je een werkende rbenv en bundler setup hebt kan je beginnen aan een project:
.ruby-version
lokaal geïnstalleerd is,bundle install –without production
de benodigde dependencies uit de Gemfile,bundle exec rake db:setup
uit om het databankschema en de seeds in te laden,rails s
,localhost:3000
.Wanneer bij stap 4 fouten optreden is dit waarschijnlijk omdat de gem een system library nodig heeft, vaak voorkomende zijn:
Gem | System dependency |
---|---|
Nokogiri | zlib1g-dev |
Rmagick | imagemagick |
Wanneer wijzigingen zijn gemaakt wil je die natuurlijk ook op de server zetten. Hiervoor gebruiken we Capistrano. Capistrano is een deployment tool die alle commando's vanaf je computer via SSH op de server uitvoert. Dit zorgt ervoor dat je niet op de server zelf moet inloggen om nieuwe wijzigingen online te zetten en verlaagt de kans op fouten. Deployen kan simpelweg via het commando cap production deploy
. Na het deployen worden nodige services herstart, zodat de wijzigingen meteen live staan.
Capistrano zet de applicatie in production/current
. Oude releases zijn beschikbaar in submappen onder production
. Mocht er een bug optreden in een nieuwe release kan je via Capistrano gemakkelijk terug naar een oude versie van de code via het commando cap production deploy:rollback
.
Als de delayed-job queue (onder andere gebruikt in FK-enrolment) stilvalt, dan kan deze herstart worden met cap production delayed_job:restart
.
Aangezien alle commando's via ssh worden uitgevoerd dien je toegang te hebben tot de server. Hiervoor werken we via ssh-keys. Als je toegang wil om een bepaalde applicatie te deployen kan je terecht bij admin@zeus.ugent.be met de naam van de applicatie, waarom je toegang wil en je public key.
Vaak gaat het eens mis, en dan is het belangrijk dat je live op de server kan debuggen. Rails biedt hier enkele handige tools voor aan, zoals de Rails console. De Rails console laat je toe om met je Rails applicatie om te gaan vanaf de command line. Het is mogelijk om modellen en variabelen op te vragen, methodes op objecten uit te voeren, etc. Dit zorgt ervoor dat je (normaalgezien) nooit rechtstreeks met de databank moet prutsen om data terug in orde te krijgen en verlaagt de kans op fouten en inconsistenties. De Rails console kan je openen op de server via het commando bundle exec rails c production
in de production/current
folder.
Logbestanden van de webserver zijn terug te vinden in de log/access.log
en log/error.log
bestanden. De Rails log staat in production/current/log/production.log
.
Enkele applicaties zoals FK-Enrolment en Gandalf steunen op CAS-integratie. Aangezien DICT de toelating voor localhost:3000
gedisablet heeft is wat meer werk nodig om deze lokaal werkend te krijgen. Kort gezegd moet het adres van de applicatie overeenkomen met wat in DICT hun databank staat. Om te kunnen integreren met CAS moet je voor deze applicaties de volgende stappen volgen:
/etc/hosts
de volgende lijn toe: 127.0.0.1 [url]
waarbij [url] het bijhorende URL bevat in onderstaande tabel,127.0.0.1
via rails s -b 127.0.0.1
(sommige Rails webservers starten de applicatie op localhost
ipv 127.0.0.1
wat niet zal werken),[url]:3000
.
Je browser zal nu het url opzoeken en in je /etc/hosts
file zien dat dit hoort bij localhost, zodat je op je lokale Rails server terecht komt. Aangezien onderstaande URLs geregistreerd zijn bij DICT zullen die ook worden toegelaten en kan je zo de CAS-integratie gebruiken.
Project | CAS-url |
---|---|
Gandalf | dev.event.fkgent.be |
FK-Enrolment | dev.registratie.fkgent.be |