gemパッケージの作り方メモ。
・RubyGems / rss_detector
・GitHub / rss_detector
この前作ったRSSを検出するRubyスクリプトをgemのパッケージとして公開してみました。
思っていたよりは簡単にできたけど、すぐに忘れそうなので作成手順を備忘録として残しておきます。
・作成手順
- ひな形の作成
- .gemspecの編集
- README.mdの編集
- 実装
- テスト
- バージョンの変更
- コミット
- ローカルでのビルド、インストール、動作確認
- GitHubへの登録
- RubyGemsのAPIキーの取り込み
- リリース
- (おまけ)Travis-CIの設定
1.ひな形の作成
bundlerを使ってひな形を作成する。(git initも同時に実行される)
% bundle gem hoge % cd hoge % git commit -m "init"
2..gemspecの編集
descriptionとsummaryを編集する。(TODOコメントが残っているとテストでこける)
add_devendencyでは、作成するgem自体が依存するパッケージを指定する。
add_development_dependencyでは、gemの開発に必要なパッケージを指定する。
% vi hoge.gemspec gem.description = %q{hoge is a fuga.} gem.summary = %q{hoge.} gem.homepage = "https://github.com/[user-name]/hoge" gem.add_dependency "nokogiri", "~>1.5" gem.add_development_dependency "rspec"
3.README.mdの編集
GitHub用にREADMEファイルを準備する。
% vi README.md
4.実装
lib配下にGemを実装する。
% vi lib/hoge.rb
5.テスト
rspecを利用してみた。Rakefileを編集して'rake spec'でテストが実行できるようにしておく。
% mkdir spec % vi spec/spec_helper.rb # encoding: utf-8 require 'rubygems' require 'hoge' % vi spec/hoge_spec.rb # coding: utf-8 require File.expand_path(File.dirname(__FILE__) + '/spec_helper') describe hoge do ... end % vi Rakefile require "bundler/gem_tasks" Bundler.setup require 'rspec/core/rake_task' desc "run spec" RSpec::Core::RakeTask.new(:spec) do |t| t.rspec_opts = ["-c", "-fs"] end % rake spec
6.バージョンの変更
バージョンを変更する。
% vi lib/hoge/version.rb
VERSION = "0.0.2"
7.コミット
% git add.
% git commit -m "v0.0.2"
8.ローカルでのビルド、インストール、動作確認
# ビルド % rake build # インストール % rake install % bundle exec irb > require 'hoge' # サンプルコード実行 bundle exec ruby sample/sample.rb
9.GitHubへの登録
GitHubでリポジトリを作成し、リポジトリへPushする。
% git remote add origin git@github.com:[user-name]/hoge.git % git push -u origin master
RubyGemsのアカウントを作成し、アカウントページに書いてある方法でAPIキーを取り込む。
% curl -u [user-name] https://rubygems.org/api/v1/api_key.yaml > ~/.gem/credentials
11.リリース
問題がなければリリースする。(GitHubのリポジトリでタグが切られ、RubyGemsに登録される)
% rake release
12.(おまけ)Travis-ciの設定
.travis-ci.ymlに設定を書いてリポジトリに格納し、Travis-ciのサイトで設定を有効にするとGitHubへPushした時にビルドを自動で実行してくれる。
メールで結果を通知させたり、README.mdにビルドステータスを表示させたりすることもできる。
% vi .travis-ci.yml language: ruby rvm: - "1.9.2" - "1.9.3" script: rake spec notifications: email: [user-name]@gmail.com % vi .README.md # hoge [![Build Status](https://travis-ci.org/[user-name]/hoge.png?branch=master)](https://travis-ci.org/[user-name]/hoge)