Shioconv(塩昆布)というrubygemsを作ってTravis CIの設定をした
久しぶりの趣味俺得gemとして「Shioconv(塩昆布)」というのを書いてみた。今日はその紹介と、rubygems.orgへのpush / Travis CIの設定でちょっとだけハマったのでそのメモを晒しておく。
Shioconv(塩昆布)とは
料理をしていて「塩小さじ1って何グラム?」という疑問を持つことはないだろうか。
そんなとき、Shioconv(塩昆布)の出番である。
require 'shioconv'
salt = Shioconv.measure(:salt, 1, :tbsp)
salt.to_g => # 18.0
大さじ、小さじ、カップなどの体積と、グラムやポンドなどの重さを相互変換できる。
Rubyのコード的には特に目新しいこともしていない。キーワード引数を使ってるので、2.0以降でしか動かない、ぐらい。
調味料の種類やシノニムなどは増えると使いやすくなるので、データについてのPRは特にうれしいので、よろしくお願いします。
ちょっぴりハマり
rake releaseしても返ってこない
bundlerでひな形の作成 / ビルド / インストール / リリースまで行おうとした。そのあたりはすべて過去に書いた通りの手順でできたのが、ひとつハマった。
% rake release
(snip)
rake aborted!
Your rubygems.org credentials aren't set. Run `gem push` to set them.
https://rubygems.org/profile/edit にcurlで一発取得するワンライナーがあるので、それを実行。パスワードを入力すると~/.gem/credentialが作成される。存在を確認してからrake releaseを打つと、いつまで経っても返ってこない。おや?おかしいな…。
% cat ~/.gem/credential
HTTP Basic: Access denied.
ぎゃー。
パスワードを打ち間違えた、というだけの話でした。curlでもrake releaseでも警告してくれないので見落としがち(という言い訳)。返ってこないな、と思ったら、credentialの中身を確認してみましょう。
Travis CIがコケる
久しぶりのgemなので、Travis CIを使ってCI回してみることにした。単純なgemなのにちょっぴりしくじったのでメモしておく。
- bundlerのバージョンは1.5.3
最新のbundler(1.6.1)でbundle gemすると、gemspecには
spec.add_development_dependency "bundler", "~> 1.6"
が記入される。しかし、Travis CIは1.5.3なので失敗する。
なんとなく腑に落ちないが、バージョン指定を “~> 1.5” にすることでテストが実行された。
- rakeにデフォルトタスクが必要
Travis CIは「bundle exec rake」でテストを実行しようとする。デフォルトタスクが:specではないと当然実行されないので、Rakefileに以下を指定した。
task default: :spec
ということで
久しぶりにコードが出てくるブログを書いたのでした。