Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Intro to Ruby 2.0
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Matt Aimonetti
March 07, 2013
Programming
800
7
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Intro to Ruby 2.0
Matt Aimonetti introduces Ruby 2.0 at SDRuby in Febr 2013.
Matt Aimonetti
March 07, 2013
Transcript
51 slides
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
More Decks by Matt Aimonetti
See All by Matt Aimonetti
Designing a generic audio API
matt_aimonetti
0
140
Applied concurrency in Go
matt_aimonetti
5
6.6k
Understanding & Sharing Rails sessions
matt_aimonetti
1
1.3k
3 secrets to build web APIs in Go
matt_aimonetti
6
1.1k
Go at Splice - Go SummerFest
matt_aimonetti
0
1.7k
Wicked Bad Ruby
matt_aimonetti
3
4k
Ruby vs. The World
matt_aimonetti
20
6.2k
mmmm..mruby everywhere & revisiting Ruby
matt_aimonetti
9
5.5k
Tower of Babel: A tour of programming languages
matt_aimonetti
28
11k
Other Decks in Programming
See All in Programming
protojson における文字化けの扱い
kazuki1023
0
400
AI時代のFlutter品質設計 — アプリ品質を守るQuality Layers
omatty198
0
370
SODA - FACT BOOK(EN)
sodainc
1
230
Rails初心者がパスキーを実装してみて大変だったこと
ktombow
0
180
선언형 햅틱 라이브러리 진동을 소개합니다
l2hyunwoo
1
310
Railsバージョンを4倍にした話
optim
0
1k
Optunaを作ったときにやりたかったこと、その後 (2026/10/16, Optuna Meetup #3)
iwiwi
4
1.5k
高橋メソッドでCVE解説シリーズ 〜CVE-2026-112816〜
hakkadaikon
0
260
DroidKnights 2026 Android A2UI Jetpack Compose 기반의 안전한 AI UI 렌더링 - 박제창
itsmedreamwalker
1
230
Materialが消えた日 〜真っ白なFlutterキャンバスにRenderObjectで絵を描く〜
umigishiaoi
0
160
Event is what happens
moro
2
4.6k
AI時代のIaC入門 〜なぜインフラをコードで管理したいのか?〜 / Introduction to IaC in the AI Era
akihisaikeda
6
1.5k
Featured
See All Featured
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
620
Color Theory Basics | Prateek | Gurzu
gurzu
1
520
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
3.1k
How to build a perfect <img>
jonoalderson
1
6.2k
Utilizing Notion as your number one productivity tool
mfonobong
4
640
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
620
GitHub's CSS Performance
jonrohan
1033
470k
VelocityConf: Rendering Performance Case Studies
addyosmani
331
25k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
2.2k
How to Think Like a Performance Engineer
csswizardry
28
2.9k
How to make the Groovebox
asonas
2
2.6k
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
2
6.4k