Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Intro to Ruby 2.0
Search
Matt Aimonetti
March 07, 2013
Programming
7
770
Intro to Ruby 2.0
Matt Aimonetti introduces Ruby 2.0 at SDRuby in Febr 2013.
Matt Aimonetti
March 07, 2013
Tweet
Share
More Decks by Matt Aimonetti
See All by Matt Aimonetti
Designing a generic audio API
matt_aimonetti
0
120
Applied concurrency in Go
matt_aimonetti
5
6.5k
Understanding & Sharing Rails sessions
matt_aimonetti
1
1.2k
3 secrets to build web APIs in Go
matt_aimonetti
6
1.1k
Go at Splice - Go SummerFest
matt_aimonetti
0
1.6k
Wicked Bad Ruby
matt_aimonetti
3
3.8k
Ruby vs. The World
matt_aimonetti
20
6.1k
mmmm..mruby everywhere & revisiting Ruby
matt_aimonetti
9
5.4k
Tower of Babel: A tour of programming languages
matt_aimonetti
28
11k
Other Decks in Programming
See All in Programming
Feature Toggle は捨てやすく使おう
gennei
0
370
車輪の再発明をしよう!PHP で実装して学ぶ、Web サーバーの仕組みと HTTP の正体
h1r0
2
420
Kubernetesでセルフホストが簡単なNewSQLを求めて / Seeking a NewSQL Database That's Simple to Self-Host on Kubernetes
nnaka2992
0
180
OTP を自動で入力する裏技
megabitsenmzq
0
130
今こそ押さえておきたい アマゾンウェブサービス(AWS)の データベースの基礎 おもクラ #6版
satoshi256kbyte
1
200
PHPのバージョンアップ時にも役立ったAST(2026年版)
matsuo_atsushi
0
260
夢の無限スパゲッティ製造機 -実装篇- #phpstudy
o0h
PRO
0
160
エンジニアの「手元の自動化」を加速するn8n 2026.02.27
symy2co
0
180
AI Assistants for Your Angular Solutions
manfredsteyer
PRO
0
160
モックわからないマン卒業記 ~振る舞いを起点に見直した、フロントエンドテストにおけるモックの使いどころ~
tasukuwatanabe
3
430
Understanding Apache Lucene - More than just full-text search
spinscale
0
140
Vuetify 3 → 4 何が変わった?差分と移行ポイント10分まとめ
koukimiura
0
200
Featured
See All Featured
SERP Conf. Vienna - Web Accessibility: Optimizing for Inclusivity and SEO
sarafernandez
1
1.4k
Primal Persuasion: How to Engage the Brain for Learning That Lasts
tmiket
0
300
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
How STYLIGHT went responsive
nonsquared
100
6k
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
76
The agentic SEO stack - context over prompts
schlessera
0
720
Pawsitive SEO: Lessons from My Dog (and Many Mistakes) on Thriving as a Consultant in the Age of AI
davidcarrasco
0
93
The SEO identity crisis: Don't let AI make you average
varn
0
420
Bootstrapping a Software Product
garrettdimon
PRO
307
120k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.6k
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
250
Transcript
ruby 2.0 San Diego Ruby - March 2013 - Matt
Aimonetti Wednesday, March 13, 13
Barney Stinson approved Wednesday, March 13, 13
Safe for Human Consumption Wednesday, March 13, 13
horse meat free Wednesday, March 13, 13
Ruby is 20 years old! Wednesday, March 13, 13
what you really need to know Wednesday, March 13, 13
Migration from Ruby 1.9 is trivial Wednesday, March 13, 13
Ruby 1.8 reaches its end of life in June Wednesday,
March 13, 13
Performance improvement Wednesday, March 13, 13
favorite Ruby Wednesday, March 13, 13
less new features Wednesday, March 13, 13
The new REE Wednesday, March 13, 13
Heroku support Wednesday, March 13, 13
Ruby 2.1 scheduled for Xmas 2013 Wednesday, March 13, 13
getting started Wednesday, March 13, 13
rvm rbenv chruby Wednesday, March 13, 13
libyaml (recent) openssl Dependencies you might need to resolve Wednesday,
March 13, 13
new in 2.0 Wednesday, March 13, 13
default code encoding Wednesday, March 13, 13
keyword arguments Wednesday, March 13, 13
# before def create(name, opts={}) opts[:tos] ||= false
opts[:timestamp] ||= Time.now end Wednesday, March 13, 13
# now def create(name, tos: false,
timestamp: Time.now) puts [name, tos, timestamp].inspect end Wednesday, March 13, 13
create("Matt") # -‐> ["Matt", false,
2013-‐03-‐06 16:34:49 -‐0800] create("Matt", timestamp: Time.now -‐ 42) # -‐> ["Matt", false, 2013-‐03-‐06 16:34:07 -‐0800] create("Matt", tos: true, location: "SDRuby") # -‐> unknown keyword: location (ArgumentError) Wednesday, March 13, 13
create("Matt", tos: true, location:
"SDRuby") # -‐> unknown keyword: location (ArgumentError) Wednesday, March 13, 13
# more flexible API def create(name, tos: false,
timestamp: Time.now, **rest) puts [name, tos, timestamp, rest].inspect end Wednesday, March 13, 13
create("Matt") # -‐> ["Matt", false,
2013-‐03-‐06 16:30:29 -‐0800, {}] create("Matt", timestamp: Time.now -‐ 42) # -‐> ["Matt", false, 2013-‐03-‐06 16:29:47 -‐0800, {}] create("Matt", tos: true, location: "SDRuby") # -‐> ["Matt", true, 2013-‐03-‐06 16:30:29 -‐0800, {:location=>"SDRuby"}] Wednesday, March 13, 13
# required keyword param def new(name,
tos: raise("TOS is required"), admin: false) end Wednesday, March 13, 13
new("Matt", tos: false) #-‐> ["Matt", false, false] new("Matt") #-‐> TOS
is required (RuntimeError) Wednesday, March 13, 13
module #prepend Wednesday, March 13, 13
# Not our code class Action def start
"just do it" end end Wednesday, March 13, 13
# The module including our modifying code module RubyIt
def start super + " better with Ruby!" end end Wednesday, March 13, 13
module RubyIt def start super +
" better with Ruby!" end end Wednesday, March 13, 13
class Action prepend RubyIt end p Action.new.start #
-‐> "just do it better with Ruby!" Wednesday, March 13, 13
lazy streams Wednesday, March 13, 13
require 'date' # Print the next 13 Friday the
13th. puts (Date.new(2013)..Date.new(9999)) .lazy .select{|d| d.day == 13 && d.friday?} .first(13) Wednesday, March 13, 13
2013-09-13 2013-12-13 2014-06-13 2015-02-13 2015-03-13 2015-11-13 2016-05-13 2017-01-13 2017-10-13 2018-04-13
2018-07-13 2019-09-13 2019-12-13 Wednesday, March 13, 13
to_h convention Wednesday, March 13, 13
Talk = Struct.new(:title, :speaker) Talk.new("Ruby 2.0", "Matt").to_h # => {:title=>"Ruby
2.0", :speaker=>"Matt"} Wednesday, March 13, 13
%i{foo bar baz} [:foo, :bar, :baz] Wednesday, March 13, 13
tracepoint support Wednesday, March 13, 13
GC/misc optimization Wednesday, March 13, 13
more... Wednesday, March 13, 13
caller_locations caller(start, length) Wednesday, March 13, 13
dtrace support Wednesday, March 13, 13
infamous refinements Wednesday, March 13, 13
Array / Range binary search Wednesday, March 13, 13
Kernel.inspect != Kernel.to_s Wednesday, March 13, 13
String#b "déjà vu".b Wednesday, March 13, 13
Thread. current. thread_variable_set("@foo", 42)
Thread. current. thread_variable_get("@foo") Thread.current.thread_variables Wednesday, March 13, 13
https://github.com/ruby/ ruby/blob/ruby_2_0_0/NEWS Wednesday, March 13, 13
@merbist http://matt.aimonetti.net Wednesday, March 13, 13