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
Curator at RICON 2012
Search
John Downey
October 10, 2012
Programming
17k
1
Share
Curator at RICON 2012
John Downey
October 10, 2012
More Decks by John Downey
See All by John Downey
Cryptography Pitfalls at CactusCon 2019
jtdowney
0
200
Intro to Cybersecurity Workshop
jtdowney
0
160
Cryptography Pitfalls at BsidesMSP 2017
jtdowney
0
210
Cryptography Pitfalls at THOTCON 0x8
jtdowney
0
220
Cryptography Pitfalls at ConFoo Montreal 2017
jtdowney
1
370
Cryptography Pitfalls at BSidesPhilly 2016
jtdowney
0
170
Cryptography Pitfalls at LASCON 2016
jtdowney
0
220
Debugging TLS/SSL at DevOps Days Detroit 2016
jtdowney
1
290
Debugging TLS/SSL at DevOpsDays Boston
jtdowney
1
370
Other Decks in Programming
See All in Programming
TSKaigi 2026 TypeScriptバックエンドのオブザーバビリティ戦略 — Datadog × NestJSの実践
taiseiyamamotoan
1
190
密結合なバックエンドから TypeScript のコードを生成する
kemuridama
1
360
[BalkanRuby 2026] Drop your app/services!
palkan
3
690
CLIであることを活かしたGitHub Copilot CLI活用術 / GitHub Copilot CLI Pro Tips & Tricks
nao_mk2
1
1.1k
UaaL×Androidアプリのメモリ計測 — Memory Profilerの先へ
rio432
0
180
TSKaigi2026-静的解析への投資がAI時代のコード品質を支える ── カスタムESLintルールの設計と運用
hayatokudou
6
1.2k
iOS26時代の新規アプリ開発
yuukiw00w
0
200
The Arts and Crafts of Work in the AI Era — Toward Mastery in Software Development
kuranuki
0
450
AI駆動開発勉強会 広島支部 第一回勉強会 AI駆動開発概要とワークショップ
hayatoshimiu
0
390
OSもどきOS
arkw
0
160
不変条件と整合性境界—ビジネスが決める設計判断と実現パターン / Invariants and Consistency Boundaries
nrslib
9
2.5k
サークル参加から学ぶ、小さな事業の回し方
yuzneri
0
240
Featured
See All Featured
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
61
44k
Believing is Seeing
oripsolob
1
130
Prompt Engineering for Job Search
mfonobong
0
320
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
65
55k
Build The Right Thing And Hit Your Dates
maggiecrowley
39
3.1k
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
210
Statistics for Hackers
jakevdp
799
230k
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
140
Building Flexible Design Systems
yeseniaperezcruz
330
40k
Pawsitive SEO: Lessons from My Dog (and Many Mistakes) on Thriving as a Consultant in the Age of AI
davidcarrasco
0
140
Optimizing for Happiness
mojombo
378
71k
Dominate Local Search Results - an insider guide to GBP, reviews, and Local SEO
greggifford
PRO
0
170
Transcript
CURATOR John Downey | @jtdowney
joinbraintree.com
None
http://www.flickr.com/photos/uberculture/2058870277/ Curator
class Person include Curator::Model attr_accessor :id, :first_name, :last_name, :age end
class PersonRepository include Curator::Repository indexed_fields :age end
person = Person.new( :first_name => "John", :last_name => "Downey", :age
=> 25 ) PersonRepository.save(person)
PersonRepository.find_by_id(person.id) => #<Person:0x007fec3437d868 ...> PersonRepository.find_by_age(25) => [#<Person:0x007fec3437d868 ...>]
Lazy Migrations http://www.flickr.com/photos/themichaelsmith/4399654643/
class Person include Curator::Model attr_accessor :id, :age def name if
@name @name else "#{@first_name} #{@last_name}" end end end
class Person include Curator::Model version 1 attr_accessor :id, :name, :age
end
# db/migrate/people/0001_consolidate_name.rb class ConsolidateName < Curator::Migration def migrate(attributes) first_name =
attributes.delete(:first_name) last_name = attributes.delete(:last_name) attributes.merge(:name => "#{first_name} #{last_name}") end end
braintree/curator