Ruby can haz Everyone

Preview:

DESCRIPTION

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

Citation preview

Ruby Can HazEVERYONE!

Mikel Lindsaar

@raasdnil

Friday, 22 April 2011

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

Example of StillAlive.com

Full stack production monitoring for your app

Friday, 22 April 2011

Ruby Wants You

Friday, 22 April 2011

MINSWANMatz is nice, so we are nice

Friday, 22 April 2011

Scratch Your Own Itch

Friday, 22 April 2011

Write a library

Patch a library

How do I start?

Friday, 22 April 2011

Patch a Library

Friday, 22 April 2011

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

Fork

Friday, 22 April 2011

Fork

Friday, 22 April 2011

Clone

Friday, 22 April 2011

Clone

Friday, 22 April 2011

Write a Failing Test Case

Friday, 22 April 2011

Write a Failing Test Case

Friday, 22 April 2011

Fix the Code

Friday, 22 April 2011

Fix the Code

Friday, 22 April 2011

Run the tests

Make it greener than you started

Multiple Rubies?

Friday, 22 April 2011

Push to your fork

Don’t push changes to the version

Detailed commit message

Friday, 22 April 2011

Send a Pull Request

Friday, 22 April 2011

Send a Pull Request

Friday, 22 April 2011

Profit

Friday, 22 April 2011

Write a Library

Friday, 22 April 2011

README Driven Dev

Friday, 22 April 2011

README Driven Dev

Friday, 22 April 2011

README Driven Dev

tom.preston-werner.com

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

Google “README Driven Development”

Friday, 22 April 2011

Write your Wish List

Friday, 22 April 2011

Write your Wish List

Friday, 22 April 2011

Friday, 22 April 2011

Friday, 22 April 2011

Research as Needed

Friday, 22 April 2011

RFCs

Research as Needed

Friday, 22 April 2011

RFCs

Research as Needed

Friday, 22 April 2011

Setup Your Gem

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

Get your tests failing

Create a simple directory structure

Friday, 22 April 2011

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

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

Nugget File Structure

Friday, 22 April 2011

Nugget Patches Wanted

http://github.com/rubyx/nugget

Add test unit support

Rails gem support?

Make it a gem

Friday, 22 April 2011

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

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

Start Somewhere

Friday, 22 April 2011

Start Somewhere

Friday, 22 April 2011

Start Simple

Friday, 22 April 2011

Start Simple

Friday, 22 April 2011

Comments are OK

Friday, 22 April 2011

Comments are OK

Friday, 22 April 2011

Use Custom Matcherswhen appropriate

Friday, 22 April 2011

Use Custom Matcherswhen appropriate

Friday, 22 April 2011

Use Custom Matcherswhen appropriate

Friday, 22 April 2011

Use Custom Matcherswhen appropriate

Friday, 22 April 2011

Break Down Spec Files

Friday, 22 April 2011

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

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

Devil is in the Detail

Friday, 22 April 2011

Devil is in the Detail

And Thats It!

Simple Hey?

Friday, 22 April 2011

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

Listen to your Users

Friday, 22 April 2011

Listen to your Users(but not blindly)

Friday, 22 April 2011

Listen to your Users(but not blindly)

Friday, 22 April 2011

Have Good Specs

Friday, 22 April 2011

Encourage Participation

Clear “How to Test” Instructions

Clear “How to Contribute” Instructions

Modular Design

MIT License

Mail has 53 contributors

Friday, 22 April 2011

Release Often

Friday, 22 April 2011

Friday, 22 April 2011