Slide 1

Slide 1 text

A QUICK INTRO RubyGems

Slide 2

Slide 2 text

@peterhellberg

Slide 3

Slide 3 text

I’m a Senior Systems Architect at Athega (where I build stuff in Ruby) ⃔ I’m also the owner o Code7 Interactive (where I build stuff in Ruby) ⃕

Slide 4

Slide 4 text

Gem::Specification.new do |s| # The attributes end Gem Speci ication In order to create a gem, you need to define a gem specification, commonly called a “gemspec”.

Slide 5

Slide 5 text

Required gemspec attributes name This gem’s name summary A short summary of this gem’s description. Displayed in `gem list -d`. version This gem’s version s.required_ruby_version = ">= 1.8.7" Required Ruby Version

Slide 6

Slide 6 text

Name, Summary and Version s.name = "pinch" s.summary = "Retrieve a file from" + "inside a zip file, over" + "the network!" s.version = Pinch::VERSION I generally add a ProjectName::VERSION constant to all of my projects, this makes it easy to show the current version at runtime.

Slide 7

Slide 7 text

s.email = "[email protected]" s.homepage = "http://peterhellberg.github.com/pinch/" s.authors = ["Peter Hellberg", "Edward Patel"] s.license = "MIT-LICENSE" About

Slide 8

Slide 8 text

s.files = Dir.glob("lib/**/*") + %w(MIT-LICENSE README.rdoc Rakefile .gemtest) Files s.test_file = "spec/pinch_spec.rb" Testing

Slide 9

Slide 9 text

s.has_rdoc = true s.rdoc_options = [ '--main', 'README.rdoc', '--charset=UTF-8' ] s.extra_rdoc_files = [ 'README.rdoc', 'MIT-LICENSE' ] Documentation

Slide 10

Slide 10 text

s.add_development_dependency 'yard', '~> 0.7' s.add_development_dependency 'minitest','~> 2.8' s.add_development_dependency 'fakeweb', '~> 1.3' s.add_development_dependency 'vcr', '~> 1.11' Dependencies No runtime dependencies in this particular project, otherwise I’d need a few calls to s.add_dependency

Slide 11

Slide 11 text

Write some well tested code

Slide 12

Slide 12 text

Publishing your gem to the world!

Slide 13

Slide 13 text

$ gem build pinch.gemspec Building $ gem push pinch-0.2.1.gem Pushing http://guides.rubygems.org/command-reference/

Slide 14

Slide 14 text

guides.rubygems.org/make-your-own-gem Learn more

Slide 15

Slide 15 text

@peterhellberg peterhellberg.info git.io/peterhellberg