RailsConf: Onsdag
Keynote: Chris Wanstrath
Presentationen: https://gist.github.com/0a2655aed6a26fa15a02
Rails Metal, Rack, and Sinatra
Adam Wiggins (Heroku) berättade om hur Rails Metal går att kombinera med Sinatra.
What Makes Ruby Go: An Implementation Primer
Charles Nutter (Sun Microsystems) och Evan Phoenix (Engine Yard) gick igenom olika delar av Ruby som man behöver tänka på för att inte stöta på prestandaproblem.
Metodanrop
Att cache:a metodanrop ger generellt sett den största prestandavinsten.
Object#extend är dock ett stort problem för att kunna cache:a metodanropen.
Det är viktigt att förstå hur extend fungerar så att man inte tömmer metodanropscachen i onödan.
Konstanter
För att hålla prestandan upp ska man hålla konstanter konstanta, inte helt oväntat.
Options Argument
En option hash strider mot DRY. Det är mycket snabbare att använda diskreta argument.
obj.run rescue nil
Det är otroligt ovanligt att man vill fånga alla StandardError, vilket är 101 underklasser; IOError, SecurityError, TypeError, Etc.
obj.run rescue Exception
I stort sett samma sak som rescue nil, fast värre, nu kan man inte ens ctrl-C’a ut ur koden.
Autoload
Helt tråd-osäkert, fördröjer laddning av koden. Använder inte Kernel#require, alltså går det inte att köra autoload från gems.
Super
Man måste ta bort blocket om man inte vill att det ska skickas uppåt:
super(a, &nil)
Super ser bara senaste versionen av argumenten:
def foo(a, b)
a = 1
b = 'bar'
super
end
Slutsats
- Enkel kod > Komplex kod
- Det finns inga gratis luncher
- Tänk igenom två gånger, skriv koden en gång
- YAGNI
Call into your Ruby code! Writing voice-enabled apps in Ruby with Adhearsion
Jay Phillips (Codemecca LLC) visade hur man kan programmera Ruby för att styra Asterisk genom att använda sig av Adhearsion.
Tyvärr fungerade det inte att använda Ahearsions Sandbox på konferensens wlan, så jag får ta och testa det lite senare.
Verkar intressant att kunna styra sin applikation genom att ringa till den :)
// Peter