Selected Sessions from RailsConf 2007
Upcoming SlideShare
Loading in...5
×
 

Selected Sessions from RailsConf 2007

on

  • 3,778 views

Notes from my test-heavy track of RailsConf 2007 sessions, as presented to the SouthBend.rb ruby and rails user group on May 29, 2007

Notes from my test-heavy track of RailsConf 2007 sessions, as presented to the SouthBend.rb ruby and rails user group on May 29, 2007

Statistics

Views

Total Views
3,778
Views on SlideShare
3,757
Embed Views
21

Actions

Likes
2
Downloads
58
Comments
2

7 Embeds 21

http://disruptiveventures.com 7
http://applieddisruption.org 5
http://jerryr.com 4
http://www.slideshare.net 2
http://www.justiphone.info 1
http://www.disruptiveventures.com 1
http://coderwall.com 1
More...

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
  • Impressive presentation on ’Selected Sessions from RailsConf 2007'. You’ve shown your credibility on presentation with this slideshow. This one deserves thumbs up. I’m John, owner of www.freeringtones.ws/ . Hope to see more quality slides from you.

    Best wishes.
    Are you sure you want to
    Your message goes here
    Processing…
  • thanq its really good and useful to me in thinking about innovation comes along with think of that.... really good work.... tanq for this.....
    Anisa
    http://financejedi.com http://healthjedi.com
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Selected Sessions from RailsConf 2007 Selected Sessions from RailsConf 2007 Presentation Transcript

  • Selected Sessions from RailsConf 2007 Jerry Richardson, jerry@jerryr.com Chief Technologist, iBlinkink
  • Clean Code • incremental improvement • always check code in better than you checked it out • never let the sun set on bad code • test first => quot;test obsessedquot; • provides the necessary flexibility
  • Robert Martin “I am not allowed to make a change that breaks the system. Every tiny change I make will keep that system working.”
  • Let’s Refactor • Principle of least surprise • tiny steps => change each variable type, then run the tests • shrink the granularity of your development • create a barrier between things that change and things that don't
  • Is it worth it? • crafting good solutions • clean it up as soon as it gets messy => the dinner parable: get up and walk away from the dinner table or keep your dishes clean all the time • bad schedules, requirements, team dynamics can all be fixed but bad code rots, ferments and becomes an inexorable weight that drags the team down.
  • Professional Behavior • The quot;Green Bandquot; • Professionals write their tests first • Professionals keep their code clean • Professionals know that the only way to go fast is to go well. • making things a little bit nicer => the check-in rule
  • Doing REST Right Recognize rest principles in what you're already doing. Apply them to your whole process. Orthodoxy (right teaching, right beliefs, right thoughts) versus Orthopraxy (right practice)
  • Orthodoxy • Roy Fielding's Thesis defined REST (Representational State Transfer) • All models are wrong but some are useful. - George Box • Leaky Abstractions • Diagrams are wrong but useful in representing complex, real-world systems. Same thing with abstractions.
  • REST isn’t... • Pretty URLs • CRUD • respond_to • map.resources • a protocol - http • an architecture
  • REST is... • the architectural style of the web • Roy Fielding's Hierarchy • Abstract => Communication Theory • REST • Web Architecture • Concrete => Implementation
  • REST is... • A resource is anything that can be named • A resource is an object with a couple of contraints - can only implement a very small number of methods, same for all resources • you don't access a resource -- you access a representation of it. (respond_to with format.xml, format.txt, etc.)
  • Orthopraxy • Identification - URL • Interaction (Method or Verb) • Safety - has no side effects, incurs no obligations (get is the only method that is safe by definition) • idempotent -- applying a function once returns the same value as applying it multiple times (get, put and delete)
  • Post • post is neither safe nor idempotent => reserve it for when you need it
  • Content, Body of Request • REST pushes all of the complexity into content, out of identification and interaction • messages should be use standards and be self- descriptive, like html • look for content types that map to your application domain - instead of to_xml, use an established type for users => do vcard instead of your arbitrary user xml
  • Adding Tests to Legacy Rails Apps Most first-time Rails apps are built before a developer understands their importance. Testing is painful in many frameworks and ignored when many people switch to using rails.
  • Starting • Don't do it all at once. It won't work. • first, run rake • mysqladmin -u root create appname_test • Use Migrations • Scaffolding is broken => those tests don't work.
  • One Step at a Time • find a bug, write a test • refactor a method, write a test • treat each method as a box - don't get pulled in to testing everything • test one thing at a time • Test: what goes in? what comes out? (returning something in the method)
  • Rake or Direct Testing • rake or direct testing • rake testing: rake test:uncommitted • direct: ruby test_file.rb -n test_name to run one test in a specific file
  • Build Tests from Logs • Parameters then reproduce actual requests.
  • What To Test • right response code • correct template • variable assignment • assignment of desired object
  • Me. Questions?
  • Image Credits • DHH http://flickr.com/photos/x180/503574487/ • Robert Martin http://flickr.com/photos/x180/503608084/ • Scott Raymond http://flickr.com/photos/keeg/511239686/ • Evan (Rabble) Henshaw-Plath http://flickr.com/photos/x180/474128166/ • Me http://flickr.com/photos/jackdanger/502998700/