bundle gem doala
動機
ドアラの顔文字どんなんだっけ?とか、ドアラのビジネスライクな仲間のペンギンの名前なんだっけ?ということ。よくあると思います。それを解決するためにgemをつくりました。
bundle gem doala
雛形作成に bundler というgemを使います。 コマンドを叩いてみましょう。こんな感じのファイル群が生成されます。
$ bundle gem doala Creating gem 'doala'... create doala/Gemfile create doala/.gitignore create doala/lib/doala.rb create doala/lib/doala/version.rb create doala/doala.gemspec create doala/Rakefile create doala/README.md create doala/bin/console create doala/bin/setup create doala/.travis.yml Initializing git repo in /Users/ohtsuka/myapp/doala
lib
配下のファイルに実際のコードを記述していきます。今回はこんな感じ。
$ cat lib/doala.rb require "doala/version" module Doala def face '(⌒(´・△・`)⌒)' end def business_friend 'つば九郎' end module_function :face, :business_friend end
buildしよう
bundlerさんがrakeタスクを用意してくれているので、ありがたく使わせていただきましょう
$ rake -T rake build # Build doala-0.1.0.gem into the pkg directory ...
早速実行してみましょう
$ rake build rake aborted! WARNING: licenses is empty, but is recommended. Use a license abbreviation from: http://opensource.org/licenses/alphabetical WARNING: See http://guides.rubygems.org/specification-reference/ for help ERROR: While executing gem ... (Gem::InvalidSpecificationException) "FIXME" or "TODO" is not a description Tasks: TOP => build (See full trace by running task with --trace)
doala.gemspecのsummaryとdescriptionにTODO
と含まれているとエラーとなるようです。それらを書き換えて再実行
$ rake build doala 0.1.0 built to pkg/doala-0.1.0.gem.
うまくいきました。pkgディレクトリ配下にgemが作られています。 では動作確認をしてみましょう。 普通にgem installできます。
$ gem i pkg/doala-0.1.0.gem Successfully installed doala-0.1.0 1 gem installed
pryで動作確認
$ pry [1] pry(main)> require 'doala' => true [2] pry(main)> Doala.face => "(⌒(´・△・`)⌒)" [3] pry(main)> Doala.business_friend => "つば九郎"
よさそうですね
テストを書こう
テストを書きます。今回はminitestというgemを使います。 Gemfileでなくdoala.gemspecに追加してbundle installします
Make your own gem - RubyGems Guides
上記ページを参考にテストの設定を行います。これでrake test
でテストが実行できるようになります
テストを書いてコマンドを叩くとテストが通ったことを確認できます
$ rake test Run options: --seed 14895 # Running: .. Finished in 0.000904s, 2211.3301 runs/s, 2211.3301 assertions/s. 2 runs, 2 assertions, 0 failures, 0 errors, 0 skips
リリースしよう
rake releaseコマンドを叩きます
$ rake release doala 0.1.0 built to pkg/doala-0.1.0.gem. Tagged v0.1.0. Untagging v0.1.0 due to error. rake aborted! ... fatal: The current branch master has no upstream branch. To push the current branch and set the remote as upstream, use git push --set-upstream origin master Tasks: TOP => release => release:source_control_push (See full trace by running task with --trace)
色々メッセージが出てきて失敗しました。追随するブランチが設定されてなかった?(初めてこのエラーを見たのでよく分かっていませんm(_ _)m)のが原因のようです。以下のコマンドでエラーは出なくなりました
$ git push --set-upstream origin master Branch master set up to track remote branch master from origin. Everything up-to-date
再度チャレンジ
$ rake release doala 0.1.0 built to pkg/doala-0.1.0.gem. Tagged v0.1.0. Pushed git commits and tags. rake aborted! ERROR: "https://rubygems.org" is not allowed by the gemspec, which only allows "TODO: Set to 'http://mygemserver.com'" Pushing gem to https://rubygems.org... Tasks: TOP => release => release:rubygem_push (See full trace by running task with --trace)
rubygemsに登録するときにはspec.metadata['allowed_push_host']あたりを消しておこう - Qiita
上記Qiitaによると、誤ってrubygemに公開されるのを避けるようになっているらしい。doala.gemspecを修正して (あと、homepageも変える必要あり)再チャレンジ
$ rake release doala 0.1.0 built to pkg/doala-0.1.0.gem. Tag v0.1.0 has already been created. Pushed doala 0.1.0 to rubygems.org.
うまくリリースされた模様
doala | RubyGems.org | your community gem host
動作確認してみましょう
$ gem i doala Fetching: doala-0.1.0.gem (100%) Successfully installed doala-0.1.0 1 gem installed
$ pry [1] pry(main)> require 'doala' => true [2] pry(main)> Doala.face => "(⌒(´・△・`)⌒)"
終わりっ!!