ruby can haz everyone

64
Ruby Can Haz EVERYONE! Mikel Lindsaar @raasdnil Friday, 22 April 2011

Upload: rubyx

Post on 20-May-2015

1.177 views

Category:

Technology


1 download

DESCRIPTION

Talk about how to get involved in the ruby community and start patching and writing gems

TRANSCRIPT

Page 1: Ruby can haz Everyone

Ruby Can HazEVERYONE!

Mikel Lindsaar

@raasdnil

Friday, 22 April 2011

Page 2: Ruby can haz Everyone

Working in Rails & Ruby for 5+ Years

Author of Mail, maintain TMail

Rails Committer

Entrepreneur

http://rubyx.com/

http://stillalive.com/

Friday, 22 April 2011

Page 3: Ruby can haz Everyone

Example of StillAlive.com

Full stack production monitoring for your app

Friday, 22 April 2011

Page 4: Ruby can haz Everyone

Ruby Wants You

Friday, 22 April 2011

Page 5: Ruby can haz Everyone

MINSWANMatz is nice, so we are nice

Friday, 22 April 2011

Page 6: Ruby can haz Everyone

Scratch Your Own Itch

Friday, 22 April 2011

Page 7: Ruby can haz Everyone

Write a library

Patch a library

How do I start?

Friday, 22 April 2011

Page 8: Ruby can haz Everyone

Patch a Library

Friday, 22 April 2011

Page 9: Ruby can haz Everyone

Fork on GitHub

6 Steps to Patch

Write a failing test case

Push to your fork

Send a pull request

Clone

Run the tests { Fix the code }

Friday, 22 April 2011

Page 10: Ruby can haz Everyone

Fork

Friday, 22 April 2011

Page 11: Ruby can haz Everyone

Fork

Friday, 22 April 2011

Page 12: Ruby can haz Everyone

Clone

Friday, 22 April 2011

Page 13: Ruby can haz Everyone

Clone

Friday, 22 April 2011

Page 14: Ruby can haz Everyone

Write a Failing Test Case

Friday, 22 April 2011

Page 15: Ruby can haz Everyone

Write a Failing Test Case

Friday, 22 April 2011

Page 16: Ruby can haz Everyone

Fix the Code

Friday, 22 April 2011

Page 17: Ruby can haz Everyone

Fix the Code

Friday, 22 April 2011

Page 18: Ruby can haz Everyone

Run the tests

Make it greener than you started

Multiple Rubies?

Friday, 22 April 2011

Page 19: Ruby can haz Everyone

Push to your fork

Don’t push changes to the version

Detailed commit message

Friday, 22 April 2011

Page 20: Ruby can haz Everyone

Send a Pull Request

Friday, 22 April 2011

Page 21: Ruby can haz Everyone

Send a Pull Request

Friday, 22 April 2011

Page 22: Ruby can haz Everyone

Profit

Friday, 22 April 2011

Page 23: Ruby can haz Everyone

Write a Library

Friday, 22 April 2011

Page 24: Ruby can haz Everyone

README Driven Dev

Friday, 22 April 2011

Page 25: Ruby can haz Everyone

README Driven Dev

Friday, 22 April 2011

Page 26: Ruby can haz Everyone

README Driven Dev

tom.preston-werner.com

2010/08/23/readme-driven-development.html

Google “README Driven Development”

Friday, 22 April 2011

Page 27: Ruby can haz Everyone

Write your Wish List

Friday, 22 April 2011

Page 28: Ruby can haz Everyone

Write your Wish List

Friday, 22 April 2011

Page 29: Ruby can haz Everyone

Friday, 22 April 2011

Page 30: Ruby can haz Everyone

Friday, 22 April 2011

Page 31: Ruby can haz Everyone

Research as Needed

Friday, 22 April 2011

Page 32: Ruby can haz Everyone

RFCs

Research as Needed

Friday, 22 April 2011

Page 33: Ruby can haz Everyone

RFCs

Research as Needed

Friday, 22 April 2011

Page 34: Ruby can haz Everyone

Setup Your Gem

Read http://docs.rubygems.org/read/book/7

Get your tests failing

Create a simple directory structure

Friday, 22 April 2011

Page 35: Ruby can haz Everyone

Simple Gem Creation

You don’t need no tools

Builds a gem skeleton with ruby

http://github.com/rubyx/nugget

$ ruby -s <(curl -s https://github.com/rubyx/nugget/raw/master/install.rb)

Friday, 22 April 2011

Page 36: Ruby can haz Everyone

More on Nugget

http://github.com/rubyx/nugget

Need to do lots of things to get started

Lowers barrier to entry to release a gem

5 minutes => Nothing to published on rubygems

Friday, 22 April 2011

Page 37: Ruby can haz Everyone

Nugget File Structure

Friday, 22 April 2011

Page 38: Ruby can haz Everyone

Nugget Patches Wanted

http://github.com/rubyx/nugget

Add test unit support

Rails gem support?

Make it a gem

Friday, 22 April 2011

Page 39: Ruby can haz Everyone

Test First Development

I use RSpec because I am lazy and forget stuff

EVERYTHING in Mail is BDD

Regressions Caught

Seriously - do it

Friday, 22 April 2011

Page 40: Ruby can haz Everyone

Testing for Libraries

Comments in Spec Files are OK

Use Custom Matchers

Break Down Your Spec Files

Start Simple

Spec in Multiple Rubies

Friday, 22 April 2011

Page 41: Ruby can haz Everyone

Start Somewhere

Friday, 22 April 2011

Page 42: Ruby can haz Everyone

Start Somewhere

Friday, 22 April 2011

Page 43: Ruby can haz Everyone

Start Simple

Friday, 22 April 2011

Page 44: Ruby can haz Everyone

Start Simple

Friday, 22 April 2011

Page 45: Ruby can haz Everyone

Comments are OK

Friday, 22 April 2011

Page 46: Ruby can haz Everyone

Comments are OK

Friday, 22 April 2011

Page 47: Ruby can haz Everyone

Use Custom Matcherswhen appropriate

Friday, 22 April 2011

Page 48: Ruby can haz Everyone

Use Custom Matcherswhen appropriate

Friday, 22 April 2011

Page 49: Ruby can haz Everyone

Use Custom Matcherswhen appropriate

Friday, 22 April 2011

Page 50: Ruby can haz Everyone

Use Custom Matcherswhen appropriate

Friday, 22 April 2011

Page 51: Ruby can haz Everyone

Break Down Spec Files

Friday, 22 April 2011

Page 52: Ruby can haz Everyone

Break Down Spec Files26 Sub Directories

79 Ruby Spec Files

73 Edge Case Emails

Many Many Lines of Specs

1,289 examples

No Failures :)

Friday, 22 April 2011

Page 53: Ruby can haz Everyone

Spec in Multiple Rubies

MRI - 1.8.7, 1.9.2

JRuby

REE

Have to be a good Ruby Citizen

Rubinius

Friday, 22 April 2011

Page 54: Ruby can haz Everyone

Devil is in the Detail

Friday, 22 April 2011

Page 55: Ruby can haz Everyone

Devil is in the Detail

And Thats It!

Simple Hey?

Friday, 22 April 2011

Page 56: Ruby can haz Everyone

Devil is in the Detail

And Thats It!

Simple Hey?

Parsers

Network

SMTP

POP3

IMAP

Pattern MatchingEdge Cases

SPAM

AttachmentsFile IO

Observers Status Reports

Mbox

Encoding

Decoding

Bad Emails

Inline Attachments

Interceptors

Delivery Agents

Body Decoding

Language SupportSendmail Delivery

PGP Signing

Domain Key EmailsOMGMIME!

File Types

Legacy Emailsrfc822

Header Errors

Friday, 22 April 2011

Page 57: Ruby can haz Everyone

Listen to your Users

Friday, 22 April 2011

Page 58: Ruby can haz Everyone

Listen to your Users(but not blindly)

Friday, 22 April 2011

Page 59: Ruby can haz Everyone

Listen to your Users(but not blindly)

Friday, 22 April 2011

Page 60: Ruby can haz Everyone

Have Good Specs

Friday, 22 April 2011

Page 61: Ruby can haz Everyone

Encourage Participation

Clear “How to Test” Instructions

Clear “How to Contribute” Instructions

Modular Design

MIT License

Mail has 53 contributors

Friday, 22 April 2011

Page 62: Ruby can haz Everyone

Release Often

Friday, 22 April 2011

Page 64: Ruby can haz Everyone

Friday, 22 April 2011