HOW TO BUILD GEMS #shibuyarb
-
Upload
satoshi-tagomori -
Category
Technology
-
view
2.153 -
download
0
description
Transcript of HOW TO BUILD GEMS #shibuyarb
How to build gemsShibuya.rb[:20120620] 2012/06/20@tagomorisNHN Japan Corp.
12年6月20日水曜日
@tagomorisNHN Japan Corp
Web Service Division
12年6月20日水曜日
Skeleton
gemname.gemspec
lib/gemname.rb
Files you need
Gemfile, Rakefile, test, spec
AUTHORS, LICENSE, README(.rdoc/.md/...)
12年6月20日水曜日
3 ways to make gems
Handmake from scratch
jeweler
bundler
12年6月20日水曜日
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日水曜日
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日水曜日
Which we should use?
Bundler, i think
simple
fully configurable with gemspec file
free from xxxxxx code and rake tasks
12年6月20日水曜日
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日水曜日
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日水曜日
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日水曜日
# -*- 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日水曜日