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 => "(⌒(´・△・`)⌒)"
終わりっ!!