Enkel och prisvärd Ruby on Rails hosting

heroku-optimized.gifOm ni letat efter enkel och prisvärd Ruby on Rails hosting vet ni att det är ganska svårt att hitta. Det brukar sluta med att man väljer en VPS (Virtual Private Server) som man sedan måste konfigurera och inte minst underhålla. När Google släppte App Engine övervägde jag att gå över från RoR (Ruby on Rails) till ett Python-baserat ramverk för att inte behöva sköta en VPS. App Engine erbjuder hosting i Googles infrastruktur vilket innebär att man inte behöver tänka på redundans eller skalning. För små webbapplikationer är App Engine dessutom gratis. En annan fördel med App Engine är att deployment av webbapplikationen görs med ett klick i App Engines utvecklingsmiljö.

Som tur är hittade jag en nystartad tjänst som liknar Google App Engine men som är avsett för Rails webapplikationer. Tjänsten heter Heroku och erbjuder precis som App Engine gratis hosting och enkel deployment fast för Rails istället för Python-ramverk. Heroku utnyttjar Amazon Web Services (AWS) och har därför ingen egen infrastruktur. På ungefär en minut kan man skapa en Rails webapplikation på sin lokala dator och skicka upp den på Heroku! Det finns sjävklart en del begränsningar men för de flesta innebär dessa inget hinder.

En av begränsningarna är att filsystemet är read-only dvs det går tex inte att spara uppladdade filer direkt hos Heroku. Detta löser man enkelt genom att använda ett CDN som tex Amazon S3. Det går inte heller att skicka mail direkt från Heroku utan man måste använda en extern mail-server. Om man endast skickar mindre mängder mail fungerar det med Gmail. Den största begränsningen är att SSL inte fungerar på egna domäner utan endast på den domän som tilldelas av Heroku tex vivid-mountain-91.heroku.com.

Om man kan leva med dessa begränsningar erbjuder Heroku ett billigt och enkelt sätt att hosta Rails webbapplikationer. Skulle man ändå behöva en VPS finns det idag några Rails-plugins som underlättar konfigurering och deployment av Rails applikationer. Inom kort kommer jag att skriva ett inlägg om dessa plugins.

Träffa nya vänner offline

FriendsOffline

 Ibland kan det vara svårt att träffa nya vänner när man flyttar till en ny stad eller när ens vänner bildar familj. Även om man redan har många vänner kan det ibland vara kul att utöka sin bekantskapskrets och kanske hitta någon att dela sina intressen med. De allra flesta Social Networking sajter inriktar sig på att hålla kontakt med gamla och nya vänner online.

Under de senaste månaderna har jag och en kompis utvecklat en sajt som heter FriendsOffline vars syfte är att träffa nya vänner offline istället för online. Sajten är utvecklad i Ruby on Rails och ligger just nu på en VPS hos GleSys. FriendsOffline är första projektet jag utvecklar i RoR och jag måste säga att ramverket är mycket smidigt när man lärt sig grunderna! Nuvarande version är mycket grundläggande och det finns många funktioner att implementera på ToDo-listan.

FriendsOffline lanserades fredagen den 16 januari och vi har precis börjat få våra första medlemmar. Det kommer att bli tufft att locka till sig nya medlemmar och nå en kritisk massa. Eftersom vi själva tror på idén och inte tänker ge upp i första taget tror jag ändå att vi har goda möjligheter att lyckas. Det går att följa arbetet med sajten på vår blogg friendsoffline.blogspot.com

Capistrano och Git för Ruby On Rails

Capistrano

För en vecka sedan skrev jag om några användbara guider för att sätta upp en Ruby On Rails server. Här följer fortsättningen som beskriver hur man konfigurerar Capistrano och Git.

Börja med att följa denna guide som beskriver hur man sätter upp en helt ny Git repository på servern: Setting up a new remote git repository. Du måste även sätta upp en lokal Git repository: Setting up a new Rails app with Git. För den som inte är van vid Git kan jag rekommendera följande guide: Git tutorial

När Git är konfigurerat på servern måste en konfigurationsfil deploy.rb för Capistrano skapas. Filen skapas i config-katalogen för din webbapplikation och ska versionshanteras precis som alla andra filer.

    set :application, “myapp”
    set :domain, “myserver.com”
    set :repository,  “ssh://gituser@#{domain}:22/var/git/myapp.git”
    set :port, 22set :deploy_via, :remote_cache
    set :deploy_to, “/var/rails/#{application}”set :scm, :gitset :user, “gituser”
    set :runner, “root”
    set :use_sudo, false

    role :app, domain
    role :web, domain
    role :db,  domain, :primary => true

    deploy.task :start do
    # nothing
    end

    namespace :deploy do
    desc “Restart Application”
    task :restart, :roles => :app do
    run “touch #{current_path}/tmp/restart.txt”
    end
    end

När detta är på plats kan man använda Capistrano för att  ladda upp nya versioner av webbapplikationen till servern. Detta förutsätter att både Capistrano och Git är installerat på din lokala dator. För att förenkla deployment bör man skapa SSH-nycklar för gituser på samma sätt som beskrivs i guiden Ubuntu Hardy Setup – page 1.

De kommando som används för deployment är:

cap deploy
cap deploy:migrate
cap deploy:migrations

Skillnaden på de två sista kommandona är att migrate endast gör själva migreringen av databasen medan migration både gör en vanlig deployment samt migrerar databasen. Första gången man gör en deployment ska man istället använda kommandot:

cap deploy:setup
cap deploy:cold

Det är nu några veckor sedan jag gjorde detta själv så det kan finnas detaljer som jag missat. Trots detta hoppas jag att informationen kan vara användbar.

Ubuntu 8.04 (Hardy) Ruby on Rails server

Ruby on RailsRuby on Rails (RoR) är ett ramverk för att snabbt utveckla webbapplikationer som använder det objektorienterade skriptspråket Ruby. Även om det finns webbhotell som stödjer RoR är det oftast bättre att använda en VPS (Virtual Private Server).

Fördelarna med en VPS är att du kan få betydligt bättre prestanda samt att du kan installera egna Ruby Gem’s. Med en VPS kan du även använda Capistrano för enkel uppladdning av webbapplikationer till servern.

Följande guider var användbara när jag satte upp min Ruby on Rails server på en VPS hos GleSYS:

Ubuntu Hardy setup – page 1

Ubuntu Hardy setup – page 2

Ubuntu 8.04 Rails Server Using Passenger

Ubuntu 8.04 Rails Server Using Passenger – Part 2

Det saknas tyvärr en guide som beskriver hur man konfigurerar Capistrano och Git (versionshantering). Jag ska därför snart försöka skriva ihop en kort guide som beskriver just dessa delar.