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
Rummaging around the stdlib
Search
jswanner
April 09, 2015
Programming
61
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Rummaging around the stdlib
Presented at an ORUG meeting
jswanner
April 09, 2015
More Decks by jswanner
See All by jswanner
ActiveRecord Scopes & Arel [RailsWayCon Version]
jswanner
3
180
ActiveRecord Scopes & Arel
jswanner
6
1.3k
Other Decks in Programming
See All in Programming
一人だけ、Kiroが静止する日
hideg
0
140
Workers Cache を知る
syumai
0
310
テストを司るデーモンに会いに行く 〜隔離した仮想マシンでテストを通すまで〜
h1d3mun3
1
600
GitHubハンズオン講座 — 実務レベルのチーム開発のフローを身につけよう
junhat6
0
110
FreeBSDでZabbixを動かす
kenkino
0
340
iOSDCのペンライトを自動制御したい!
akkeylab
0
220
C#の現在地 進化の歴史と、AI時代の.NET Everywhere
neuecc
5
4.4k
mrbgem 三角測量 開発
ogom
0
140
手動確認はもう限界 〜XCUITestでCustom URL Schemeの遷移を起動種別ごとに自動テストする〜 / Testing Custom URL Schemes with XCUITest
otouto
0
360
ハーネス設計入門 〜 基礎知識の整理から実務へのステップアップ 〜
kinopeee
19
19k
20260914 AIエージェント時代のPlatform Engineering LLM基盤とプロダクトの責務境界線
kanfab1
7
2.3k
【高い買い物LT会】初任給で話題の国産フィジカルAIを買った話
akagami
PRO
0
180
Featured
See All Featured
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
510
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
250
Building a Modern Day E-commerce SEO Strategy
aleyda
45
9.2k
New Earth Scene 8
popppiees
4
2.6k
Building Flexible Design Systems
yeseniaperezcruz
330
41k
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
1
430
Mind Mapping
helmedeiros
1
380
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
350
Exploring anti-patterns in Rails
aemeredith
4
520
Chasing Engaging Ingredients in Design
codingconduct
0
340
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
1
330
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.9k
Transcript
Rummaging around the stdlib Jacob Swanner @jswanner
Definition of stdlib
Not a library of these
Definition of stdlib • Ships with the language • Separate
from “core” • Opt-in parts of the language
Old Identification Scheme • Something you needed to `require` •
Doesn’t quite work anymore
New Identification Scheme • Use documentation • Core: http://ruby-doc.org/core-2.2.1/ •
stdlib: http://ruby-doc.org/stdlib-2.2.1/
Common Parts • base64 • csv • erb • fileutils
• json • logger • net/http • pathname • pp • securerandom • webrick • yaml
Confusing Parts: Time $ irb >> Time.new(2015, 4, 9) =>
2015-04-09 00:00:00 -0400 >> Time.parse('2015-04-09') NoMethodError: undefined method `parse' for Time:Class >> require 'time' => true >> Time.parse('2015-04-09') => 2015-04-09 00:00:00 -0400
Confusing Parts: Date $ irb >> Date.new(2015, 4, 9) NameError:
uninitialized constant Date >> require 'date' => true >> Date.new(2015, 4, 9) => #<Date: 2015-04-09 ((2457122j,0s,0n),+0s,2299161j)> >> Date.parse('2015-04-09') => #<Date: 2015-04-09 ((2457122j,0s,0n),+0s,2299161j)>
Confusing Parts: RubyGems $ irb >> Gem => Gem >>
require 'rails' => true $ ruby --disable-gems -S -- irb >> Gem NameError: uninitialized constant Gem >> require 'rails' LoadError: cannot load such file -- rails
Lesser Known: ipaddr $ irb -r ipaddr >> IPAddr.new('10.0.0.256') IPAddr::InvalidAddressError:
invalid address >> ip = IPAddr.new('10.0.0.10') => #<IPAddr: IPv4:10.0.0.10/255.255.255.255> >> ip.succ => #<IPAddr: IPv4:10.0.0.11/255.255.255.255> >> ip.ipv6? => false >> ip_range = ip.mask(24) => #<IPAddr: IPv4:10.0.0.0/255.255.255.0> >> ip_range.include?(ip) => true
Lesser Known: irb #!/usr/bin/env ruby require 'irb' # require application
code # perform application boot IRB.start(__FILE__)
Buried Treasure: FileList $ irb -r rake/file_list >> existing =
Rake::FileList.new("*.markdown") => ["a.markdown", "b.markdown", "c.markdown"] >> renamed = existing.ext(".md") => ["a.md", "b.md", "c.md"] >> existing.zip(renamed). ?> each { |from, to| FileUtils.mv(from, to) } => [["a.markdown", "a.md"], ["b.markdown", "b.md"], ["c.markdown", "c.md"]]
FileList, cont’d $ tree ├── lib/ │ ├── a.rb │
├── b.rb │ └── c.rb └── test/ ├── a_test.rb └── c_test.rb
FileList, cont’d $ irb -r rake/file_list >> source = Rake::FileList.new("lib/*.rb")
=> ["lib/a.rb", "lib/b.rb", "lib/c.rb"] >> tests = Rake::FileList.new("test/*_test.rb") => ["test/a_test.rb", "test/c_test.rb"] >> untested = source. ?> sub(‘lib/‘, 'test/').sub('.rb', '_test.rb'). ?> exclude { |f| tests.include?(f) } => ["test/b_test.rb"]
YAML::Store $ irb -r yaml/store >> store = YAML::Store.new("store.yml") =>
#<Psych::Store:0x007f9b8f5b2430 …> >> store.transaction do ?> store["people"] = ["dray", "jacob", "nate"] ?> store["time"] = Time.now ?> end => … >> store["people"] PStore::Error: not in transaction
YAML::Store, cont’d $ cat store.yml --- people: - dray -
jacob - nate time: 2015-04-09 16:23:58.394957000 -04:00
Quirky: un $ irb -I lib -r date $ irb
-Ilib -rdate
Quirky: un, cont’d ruby -run -e cp -- [OPTION] SOURCE
DEST ruby -run -e ln -- [OPTION] TARGET LINK_NAME ruby -run -e mv -- [OPTION] SOURCE DEST ruby -run -e rm -- [OPTION] FILE ruby -run -e mkdir -- [OPTION] DIR ruby -run -e rmdir -- [OPTION] DIR ruby -run -e install -- [OPTION] SOURCE DEST ruby -run -e touch -- [OPTION] FILE ruby -run -e wait_writable -- [OPTION] FILE ruby -run -e mkmf -- [OPTION] EXTNAME [OPTION] ruby -run -e httpd -- [OPTION] DocumentRoot ruby -run -e help [COMMAND]
Quirky: un, cont’d $ ruby -run -e httpd -- --port
8888 . & […] INFO WEBrick::HTTPServer#start: port=8888 $ curl "http://localhost:8888/store.yml" --- people: - dray - jacob - nate time: 2015-04-09 16:23:58.394957000 -04:00
Quirky: ubygems $ cat $RUBY_ROOT/lib/ruby/2.2.0/ubygems.rb # This file allows for
the running of rubygems with a nice # command line look-and-feel: ruby -rubygems foo.rb #-- # Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others. # All rights reserved. # See LICENSE.txt for permissions. #++ require 'rubygems'
• CDC/ C. Goldsmith, P. Feorino, E. L. Palmer, W.
R. McManus http:// en.wikipedia.org/wiki/HIV/AIDS#/media/File:HIV-budding-Color.jpg • http://commons.wikimedia.org/wiki/User:Nephron http://en.wikipedia.org/wiki/ Herpes_simplex_virus#/media/File:Herpes_simplex_virus_pap_test.jpg • http://en.wikipedia.org/wiki/Chlamydia_infection#/media/ File:Pap_smear_showing_clamydia_in_the_vacuoles_500x_H%26E.jpg