ruby monsters

109

Upload: 1337807

Post on 02-Jul-2015

184 views

Category:

Technology


0 download

DESCRIPTION

An exploration of the forgotten and dusty corners of Ruby, including a tour of some very unusual behaviors from threads, loops, exceptions and procs. This is a technical deep dive into some obscure features of Ruby that may someday crawl out from under your bed, and when they do you'll be glad you were prepared for the fight.

TRANSCRIPT

Page 1: Ruby monsters
Page 2: Ruby monsters

I’m Jonanalso @1337807

Page 3: Ruby monsters

I’m from Portland

Page 4: Ruby monsters

They call me

Webmaster

Page 5: Ruby monsters

Also New Relic

Page 6: Ruby monsters

One of us

bit.ly/nerdlife

Page 7: Ruby monsters

Ruby Monsters!

Page 8: Ruby monsters

Oddities

Page 9: Ruby monsters

Ruby is adorable

Page 10: Ruby monsters
Page 11: Ruby monsters

begin; endA neutral, hypoallergenic code wrapper made of opinions.

Page 12: Ruby monsters
Page 13: Ruby monsters
Page 14: Ruby monsters
Page 15: Ruby monsters
Page 16: Ruby monsters
Page 17: Ruby monsters
Page 18: Ruby monsters
Page 19: Ruby monsters
Page 20: Ruby monsters
Page 21: Ruby monsters
Page 22: Ruby monsters
Page 23: Ruby monsters
Page 24: Ruby monsters
Page 25: Ruby monsters

do while

Page 26: Ruby monsters
Page 27: Ruby monsters
Page 28: Ruby monsters
Page 29: Ruby monsters
Page 30: Ruby monsters

ensureWhen you absolutely, probably, maybe need it done approximately right.

Page 31: Ruby monsters
Page 32: Ruby monsters
Page 33: Ruby monsters
Page 34: Ruby monsters
Page 35: Ruby monsters
Page 36: Ruby monsters

Thread#raise

Page 37: Ruby monsters

“I don’t use Thread#raise.”

Page 38: Ruby monsters
Page 39: Ruby monsters
Page 40: Ruby monsters

Net/HTTP

Page 41: Ruby monsters

flip-flopWhen only the occasional truth will do.

Page 42: Ruby monsters
Page 43: Ruby monsters
Page 44: Ruby monsters
Page 45: Ruby monsters
Page 46: Ruby monsters
Page 47: Ruby monsters
Page 48: Ruby monsters
Page 49: Ruby monsters
Page 50: Ruby monsters

(expr1)..(expr2)inclusive, evaluates both expressions on each pass

(expr1)…(expr2)exclusive, evaluates one expression per iteration

Page 51: Ruby monsters

scopeLike voting districts for your code, with more gerrymandering.

Page 52: Ruby monsters
Page 53: Ruby monsters
Page 54: Ruby monsters
Page 55: Ruby monsters
Page 56: Ruby monsters
Page 57: Ruby monsters
Page 58: Ruby monsters
Page 59: Ruby monsters
Page 60: Ruby monsters

closuresThey’re exactly like that one thing from that one language except sometimes when they’re not.

Page 61: Ruby monsters
Page 62: Ruby monsters

portable code podsbits of code that travel a lot, but never forget their roots.

Page 63: Ruby monsters
Page 64: Ruby monsters

blocks

Page 65: Ruby monsters
Page 66: Ruby monsters

Integer#times

Page 67: Ruby monsters
Page 68: Ruby monsters
Page 69: Ruby monsters
Page 70: Ruby monsters
Page 71: Ruby monsters
Page 72: Ruby monsters
Page 73: Ruby monsters

procs

Page 74: Ruby monsters
Page 75: Ruby monsters
Page 76: Ruby monsters
Page 77: Ruby monsters
Page 78: Ruby monsters
Page 79: Ruby monsters

lambdas

Page 80: Ruby monsters
Page 81: Ruby monsters
Page 82: Ruby monsters
Page 83: Ruby monsters
Page 84: Ruby monsters
Page 85: Ruby monsters
Page 86: Ruby monsters
Page 87: Ruby monsters
Page 88: Ruby monsters

blocks and procs- arbitrary arguments!- return home

lambdas- strict arguments!- local return

Page 89: Ruby monsters
Page 90: Ruby monsters
Page 91: Ruby monsters
Page 92: Ruby monsters
Page 93: Ruby monsters
Page 94: Ruby monsters
Page 95: Ruby monsters
Page 96: Ruby monsters
Page 97: Ruby monsters
Page 98: Ruby monsters
Page 99: Ruby monsters

goto!

Page 100: Ruby monsters
Page 101: Ruby monsters
Page 102: Ruby monsters
Page 103: Ruby monsters

I’m Jonanalso @1337807

Page 104: Ruby monsters

I’m from Portland

Page 105: Ruby monsters

They call me

Webmaster

Page 106: Ruby monsters

I work for New Relic

Page 107: Ruby monsters

One of us

bit.ly/nerdlife

Page 108: Ruby monsters

Ruby Monsters!

Page 109: Ruby monsters

!

the end :)