$30 off During Our Annual Pro Sale. View Details »
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Rummaging around the stdlib
Search
jswanner
April 09, 2015
Programming
0
57
Rummaging around the stdlib
Presented at an ORUG meeting
jswanner
April 09, 2015
Tweet
Share
More Decks by jswanner
See All by jswanner
ActiveRecord Scopes & Arel [RailsWayCon Version]
jswanner
3
170
ActiveRecord Scopes & Arel
jswanner
6
1.2k
Other Decks in Programming
See All in Programming
sbt 2
xuwei_k
0
250
Rediscover the Console - SymfonyCon Amsterdam 2025
chalasr
2
160
著者と進める!『AIと個人開発したくなったらまずCursorで要件定義だ!』
yasunacoffee
0
120
Full-Cycle Reactivity in Angular: SignalStore mit Signal Forms und Resources
manfredsteyer
PRO
0
200
CSC305 Lecture 17
javiergs
PRO
0
340
堅牢なフロントエンドテスト基盤を構築するために行った取り組み
shogo4131
8
2.2k
ID管理機能開発の裏側 高速にSaaS連携を実現したチームのAI活用編
atzzcokek
0
210
認証・認可の基本を学ぼう前編
kouyuume
0
190
生成AIを利用するだけでなく、投資できる組織へ
pospome
0
160
【Streamlit x Snowflake】データ基盤からアプリ開発・AI活用まで、すべてをSnowflake内で実現
ayumu_yamaguchi
1
120
【CA.ai #3】ワークフローから見直すAIエージェント — 必要な場面と“選ばない”判断
satoaoaka
0
230
How Software Deployment tools have changed in the past 20 years
geshan
0
28k
Featured
See All Featured
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
34k
Thoughts on Productivity
jonyablonski
73
5k
Testing 201, or: Great Expectations
jmmastey
46
7.8k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
We Have a Design System, Now What?
morganepeng
54
7.9k
The Invisible Side of Design
smashingmag
302
51k
Building Applications with DynamoDB
mza
96
6.8k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
253
22k
For a Future-Friendly Web
brad_frost
180
10k
Documentation Writing (for coders)
carmenintech
76
5.2k
Agile that works and the tools we love
rasmusluckow
331
21k
Facilitating Awesome Meetings
lara
57
6.7k
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