Dit is een rake task die ik gebruikte voor Capistrano. Als je net begint met rails dan heb je ook eigenlijk nog geen tijd voor subversion, capistrano en al die andere tools. Eerst rails leren. Bovendien bestaat een capistrano installatie uit officieel drie machines. Development, deployment en een subversion server. Niet iedereen heeft dat ter beschikking. En het liefst ook nog een staging server.
Maar een beetje developer heeft op zijn minst een tweede machine. Dus twee jaar geleden had ik een MacBook en een Mac Mini. Maar geen capistrano installatie. Dus bij de tweede keer kopieren moet je wat anders verzinnen. Vandaar deze rake task. En ik gebruik deze rake task nog steeds. Vaak wil je iets testen op een staging server en toch lokaal ontwikkelen zonder daarbij direct subversion en capistrano op te zetten.
De rake task is gebaseerd op rsync en ssh. Geen probleem want OS X heeft dat, alleen ssh moet aangezet worden bij Systeemvoorkeuren en dat is uiteraard voor beide machines het geval.

Op het moment dat je het aanvinkt wordt onderaan zichtbaar hoe je moet inloggen op je machine. Bijvoorbeeld: ssh deploy@192.168.1.120
Bij jou is dat wat anders waarschijnlijk. Maar daarna eerst uitproberen of je kan inloggen voordat je de rake task gebruikt. Anders gaat het niet werken. Dus macbook is development en mini is deployment. Dus de user naam van de mini is 'deploy'. We gaan op de macbook vanuit terminal inloggen op de mini via ssh. De eerste keer zal de mini gaan antwoorden dat hij jou niet kent. Niets engs gewoon 'yes' intikken.
> ssh deploy@192.168.1.120
The authenticity of host could not be established....
RSA key fingerprint is...
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added host to the list of known hosts.
Password:
Het password is uiteraard het adminstrator password van de mini, en niet van de macbook. Het juiste password intikken en terminal begroet ons met de shell van de mini. Met 'exit' verlaat je de shell weer. Log nu nog maar een keer in. Nu hoef je alleen maar het password te tikken en je ben ingelogd. Omdat je namelijk bent toegevoegd aan het 'known_hosts' bestand, dus je bent een bekende van de mini. Nog een stap verder maar een artikel op zich is het opzetten van je ssh-keys. Dan is het helemaal niet meer nodig om passwords in te tikken.
Rake Uitrollen Task
De eerste keer kopieren we de complete rails map van ons project handmatig omdat in de rake task niet alle directories gesynced worden, zoals log, tmp etc.
desc 'Uitrollen Web Applicatie'
task :uitrollen => :environment do
rails = [ 'app', 'config', 'db', 'lib', 'public', 'vendor' ]
gebruiker = 'deploy'
domein = '192.168.1.120'
app = 'demo'
server = "#{gebruiker}@#{domein}:/Users/#{gebruiker}/#{app}"
rails.each do |dir|
`rsync -avz -e ssh "#{RAILS_ROOT}/#{dir}" "#{server}"`
end
end
Deze rake task is gewoon handig voor test applicaties op een staging server. Ik kan ook gewoon met script/server opstarten op de mini. Als ik dan lokaal op de macbook een code push wil doen dan kan dat heel simpel met:
> rake uitrollen