The text of my ill-prepared lightning talk. Note I only presented up item 4 in the “testing” section before I ran out of time.

This has been edited a bit since I presented.

Why your gems break
and what you
can (and cant)
do about it

Matthew Nielsen
@xunker

RubyProof.org

Because I hate WOMM.

Top 10 Problems with Gems
(So Far)

Installation and use problems – Fixable

1) not declaring dependencies

2) declaring invalid, stale, old or difficult to find dependencies

Example: jeremymacanally-pending

3) declaring yourself as a dependency?!? Cyclic dependencies.

3a) Using yourself as your testing framework.

I have no clue what to do here.

4) not declaring absolute or minimal and maximal versions of dependencies

4a)

“__GEM__ >= 0″

needs to die in a fire.

Testing problems – Fixable

1) not declaring your testing framework (rspec, cucumber, etc) as a dependency

2) not declaring a proper version of your testing framework*

*: “__GEM__ >0″ needs to DIAF

3) not properly declaring your development dependencies

Development dependencies are not the same as runtime dependencies

4) setting your tests to not run from the root of the project

No one has declared a standard, so THIS IS the standard, so sayeth ME.

Problems that are not fixable (yet)

1) the gemspec doesn’t yet have a way to specify binary dependencies

Event being told “you need Mysql installed” would be an improvement.

(EDIT: THE “REQUIREMENTS” FIELD IN THE GEMSPEC IS UNUSED AND THEREFORE HOPE EXISTS.)

2) the gemspec doesn’t allow for a way to run any system command to verify a requirement for a gem to be installed.

This could check for required libraries, special hardware dependencies, environment, etc

Go forth an hack, and write better gems.

http://RubyProof.org

Very, very alpha