11
How to build gems Shibuya.rb[:20120620] 2012/06/20 @tagomoris NHN Japan Corp. 12620日水曜日

HOW TO BUILD GEMS #shibuyarb

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: HOW TO BUILD GEMS #shibuyarb

How to build gemsShibuya.rb[:20120620] 2012/06/20@tagomorisNHN Japan Corp.

12年6月20日水曜日

Page 2: HOW TO BUILD GEMS #shibuyarb

@tagomorisNHN Japan Corp

Web Service Division

12年6月20日水曜日

Page 3: HOW TO BUILD GEMS #shibuyarb

Skeleton

gemname.gemspec

lib/gemname.rb

Files you need

Gemfile, Rakefile, test, spec

AUTHORS, LICENSE, README(.rdoc/.md/...)

12年6月20日水曜日

Page 4: HOW TO BUILD GEMS #shibuyarb

3 ways to make gems

Handmake from scratch

jeweler

bundler

12年6月20日水曜日

Page 5: HOW TO BUILD GEMS #shibuyarb

JewelerLatest release: January 25, 2012

Init: directory tree & github repository

Gemfile

Rakefile with many tasks (test, rcov, ...)

test/helper.rb

sometimes doesn't work correctly....

Versioning: 'rake version:bump:major'

Release: 'rake release'

12年6月20日水曜日

Page 6: HOW TO BUILD GEMS #shibuyarb

BundlerWhat we all installed

Init: directory tree only

Gemfile (refers .gemspec only)

Rakefile (a few tasks)

lib/gemname/version.rb

Versioning: edit version.rb (or .gemspec directly)

Release: 'rake release'

12年6月20日水曜日

Page 7: HOW TO BUILD GEMS #shibuyarb

Which we should use?

Bundler, i think

simple

fully configurable with gemspec file

free from xxxxxx code and rake tasks

12年6月20日水曜日

Page 8: HOW TO BUILD GEMS #shibuyarb

Steps to build gem: directory tree

bundle gem foobar

cd foobar

vi foobar.gemspec

vi .gitignore

git remote add origin URL

git add ....

git commit -m '...'

git push -u origin master

12年6月20日水曜日

Page 9: HOW TO BUILD GEMS #shibuyarb

Steps to build gem: write tests and code

mkdir spec # or mkdir test

vi spec/spec_helper.rb

# or test/test_helper.rb

WRITE TESTS

WRITE CODE

git add ....

git commit -m '....'

rake install # and use it by yourself

12年6月20日水曜日

Page 10: HOW TO BUILD GEMS #shibuyarb

Steps to build gem: release

vi lib/foobar/version.rb

# or 'gem.version' in gemspec

vi foobar.gemspec

vi README.md

git add ....

git commit -m '....'

rake release

12年6月20日水曜日

Page 11: HOW TO BUILD GEMS #shibuyarb

# -*- encoding: utf-8 -*-

Gem::Specification.new do |gem| gem.name = "mysql2-cs-bind" gem.version = "0.0.2" gem.authors = ["TAGOMORI Satoshi"] gem.email = ["[email protected]"] gem.homepage = "https://github.com/tagomoris/mysql2-cs-bind" gem.summary = %q{.... } gem.description = %q{.... }

gem.files = `git ls-files`.split($\) gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) } gem.test_files = gem.files.grep(%r{^(test|spec|features)/}) gem.require_paths = ["lib"]

gem.add_runtime_dependency "mysql2"

# tests gem.add_development_dependency "mysql2" gem.add_development_dependency 'eventmachine' gem.add_development_dependency 'rake-compiler', "~> 0.7.7" gem.add_development_dependency 'rake', '0.8.7' gem.add_development_dependency 'rspec'end

12年6月20日水曜日