塩昆布

久しぶりの趣味俺得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

ということで

久しぶりにコードが出てくるブログを書いたのでした。