MacでGuard + Spork+ RSpecをする前にやっておくべきこと

いやー、すげーハマっていた…。ようやく解決した。10時間くらい使ってしまった…。

Guard + Spork + RSpecでBDD環境を整えるという記事は結構あって、それらを参考に環境を整えた。その後、specファイルを更新してもテストが通らない…。その原因を調べるためにググりまくったのだが、全然わからなかった。

解決したので先に結論を書いておくと、guardの本家のサイトに書いてあった(最初から本家をちゃんと読めと言われればそうかもしれんがorz)

Add proper Readline support to Ruby on Mac OS X

Macの場合、Guardを使おうと思ったら、RubyからReadlineを使えるようにしておかなければいけないようだ。うーん、そういうことが日本語の情報では書かれてなかった。というか、初歩の初歩なのだろうか…orz

自分の環境はrbenvなので、先の情報に従って環境を整えた。
Rubyのバージョンのところは自分が使っているバージョンに変更している。

brew install readline
CONFIGURE_OPTS=--with-readline-dir=`brew --prefix readline` rbenv install 1.9.2-p290

その後、bundle exec guardをしたら、自動でテストが動いた!!よかった!!!


Deviseのバージョンによってemailカラムが必須?

現在作っているサービスはOAuthでのtwitter認証のみにしようと思っているので、emailなどは不要。むしろ個人情報とか言われたくないので取りたくない。と思ってDevise + Omniauth + Omniauth-twitterでサービスの認証部分を作っていたのだけれど、bundle updateしたらrspecが通らなくなってしまった。

エラーの原因は、undefined method emailだという。そりゃないからな!でもなんで急に求められるようになったんだ!?
で、この原因はDeviseのバージョンアップだった。2.2.0になるとダメっぽい(自分のところで使ってたのは2.1.2)

そこで、Deviseのバージョンを固定したら、テストが通るようになった。とりあえずはこれでいきたい。


bundle updateしたらtherubyracerでエラーに…

gehirnに最新ソースをデプロイしようかと思って、SSHでログインしてgit pullしてbundle updateしたら、エラーになった。
原因はtherubyracer 0.11.1がインストールできないということだった。

理由を調べていたら、libv8のバージョンに依存しているようだったので、libv8のバージョンを3.11.8.4に固定するようにしてみた。
すると、therubyracerのバージョンは0.11.0になって、bundle updateできたようだ。よかった。

ちなみに参考元は本家のissue#215


2013年の目標

あけましておめでとうございます。
本年もよろしくお願いします。

今年の目標は、

  1. 既存アプリのリファクタリング
  2. 既存アプリのテストを書く
  3. 自動化する
  4. ポモドーロテクニックを実践する
  5. 体重を1ヶ月1kg落とす
  6. 1週間に1冊、本を読む
  7. 継続的掃除

にします。敢えて年間目標は少なくし、
ポモドーロテクニックで倒していく。
そういう一年にしたいと思います。


去年の反省

去年の目標を見直してみると、全く達成できていなかった…。

Androidアプリはリリースできてないし、コンテストに応募できていないし、GAE/Jを使いこなせるようになっていないし、外国語は覚えていないし、ロードバイクは絶賛パンク中。体重は65kgどころか75kgになり、ネットからの副収入はむしろ減った!!

色々なことに注意が散ってしまったような気がする。

そのかわり、Rubyを使えるようになった。
Rubyのシルバーを取得もしたし、テストの書き方を覚えた。
勉強会の形として、読書会をしたらどうか?と思うようになり、メタプログラミングRuby読書会を開催するようになった。
あとは彼女ができた。

目標が達成できなかったのは、

  • 目標多すぎた。
  • Ruby楽しすぎた。
  • Rails面白かった。
  • テスト楽しかった。
  • ゆめや行き過ぎた。(チキンカツ食べ過ぎ)
  • 目標を忘れていた。

目標を忘れてしまうので、次は目標を忘れないような一年にしたいですねぇ〜。