20分でテスト付きのgemを作って公開する
20分程度で、テストコード付きのgemを作って公開するところまでやってみました。
1. gemのひな形を作ります。
$ bundle gem sudden_death -b -t $ git commit -m "first commit"
git initとgit addが自動的に行われるので、コミットしておきましよう。
2. sudden_death.gemspecを編集して、コマンドの説明を記述します。
〜略〜 spec.name = "sudden-death" 〜略〜 spec.summary = %q{Add sudden_death method to String class.} spec.description = %q{Add sudden_death method to String class.} 〜略〜
$ git commit -a -m "説明追加"
3. 文字列を"突然の死"に変えるコードを書きます。
lib/sudden_death.rbを編集します。
require "sudden_death/version" class String def sudden_death len = (self.chars.inject(0){|sum, c| sum + (c.bytesize > 1 ? 2 : 1)} / 2).floor <<EOS _#{"人" * (len + 2)}_ > #{self} <  ̄Y#{"^Y" * len} ̄ EOS end end
Stringクラスを拡張してみました。
4. コマンドラインからコマンドとして呼び出せるようにします。
bin/sudden_deathを編集します。
#!/usr/bin/env ruby require 'sudden_death' str = ARGV.join(' ').sudden_death puts str
5. テストコードを記述します。
spec/sudden_death_spec.rbを編集します。
require 'spec_helper' describe SuddenDeath do it 'should have a version number' do SuddenDeath::VERSION.should_not be_nil end it 'should make totsuzenno-shi' do str = '突然の死' sd = <<-EOS _人人人人人人_ > 突然の死 <  ̄Y^Y^Y^Y^Y ̄ EOS (str.sudden_death == sd).should be_true end end
テストをするには、このプロジェクトのルートディレクトリにいる状態で、
$ rake spec
とコマンドを打ちます。
うまく動作するかどうか確認しましょう。
6. gemを公開します。
$ rake build $ gem push pkg/sudden-death-0.0.1.gem
完成!
こんな感じで、gemを作って開するまでだいたい20分程度でできました。