Rails Tutorialをminitestでやってみた

はじめに

Rails4が出たことだし、Rails Tutorialでもひと通りやってみようとチャレンジ。

ただ、Rails3のときにひと通りやったこともあり、普通にやったらあまり面白みもないので、RSpecで書かれているテストをminitestのspec形式で書いてみることにしました。

minitest

そもそものきっかけは、RubyHirobaでのwillnetさんによるLT。ちょうどRSpecの書き方が色々と変わったことで嫌気が差した頃だったので、「ちょっとやってみるか」という軽い気持ちでやってみました。

題材

さて、minitestでテストを書くと言っても素で書くのはちょっとつらい。題材として、

  • 何か動くものができること
  • RSpecでテストが書かれていること

を探していると、ちょうどいいものが。それがRails Tutorialで、Rails4の勉強がてらやってみることにしました。

やった成果

GitHubで公開しています。

ただ、一部のテストはちょっと書けないままでいます。

所感

思ったことをつらつらと

  • MinitestでSpec形式のテストもかけるので、RSpec書いていた人はさくっと書けるのではないかと思います。
  • matcherがまだ不足気味かなと思います。自分で書けよって言われそうですが。
  • ただ、環境はどんどん整ってきているような気もします。GitHubに上がっているソースを見ると、最新のものにはmatcherが幾つか追加されているので、より書きやすくなることは確実かと。
  • minitest-rails-capybara gemとcapybara_minitest_spec gemがあって、それぞれcapybaraに関するgemですが、matcherの有無だけです。こういうところがまだ発展途上ってな感じ。
  • 時間があったらGuardfileも修正しておこうかなと思います。controllerを直して、integrationのテストを実行するようにしたいなと。

QA@ITから個人的に興味深い質問を洗い出してみました。

QA@ITに挙げられている質問のうち、個人的に興味深い質問を洗い出してみました。全部は追い切れないので、ざっと見た感じで。

Rubyで!!という二重否定を単項演算子として使う理由は?

確実にtrueとfalseを返すためのテクニックなのですね。

RailsでBootstrapのgemのおすすめは?

「bootstrapってlessを使っているからなぁ〜」と使わない言い訳をこれまでしていたのですが、lessを使わないものもあるのですね。ちょっとやってみるか。

Railsのconfig/locals/ja.ymlでの!の機能とは?

エスケープシーケンスみたいなものですね。

gitで直前にいたブランチとの行き来を簡単に行うには?

ブランチ名"-"でOKなんですね。

第24回 Yokohama.rbに行ってきました

毎月恒例ですね。第24回 Yokohama.rbに行って来ました。

今回は男ばっかり約30名。いつもの常連さんはもちろん、初参加の方も3名いらして大いに盛り上がりました。

自己紹介では、@hokkai7goさんが最近転職されたことが発表。ほんとYokohama.rbに参加すると人生が好転するってジンクスはまだまだ有効そうです。

Rubyレシピブック読書会

恒例のRubyレシピブック読書会。今回は、「レシピ53 文字列をエスケープする/エスケープを外す」からスタート。

Rubyレシピブック 第3版 303の技

Rubyレシピブック 第3版 303の技

単に本に書かれていることを読んでおしまいってわけではなく、「こうやって見たらどうなるんだろう」という脱線が面白いRubyレシピブック読書会。今回は、

  • gsubメソッドの第二引数を取るものとブロックを取るものの違い
  • String#dumpの使い道
  • chopって使わないよねぇ・・・
  • String#[]=の非破壊的なメソッドは?

といったことが話題になり、今回も充実した読書会となりました。

今回はレシピ56まで進みました。進みはちょっとゆっくりですが、一つ一つのレシピが濃いのでしょうがないですね。

後半はもくもく

レシピブック読書会が終わったあとは、各自モクモク。次週が札幌Ruby会議なので、そのLTの準備をされている方もいらっしゃいました。

私は溜まっていたRailsCastsをちょっとだけ消化。1回10分ぐらいなんだけど、なかなか消化できていないなぁ。日と時間を決めてちゃんと消化しないとなぁ。

いつものまとめ

いつものようにTogetterによるまとめです。

Rails-Dev-Boxでらくらく開発環境自動構築

例によってRuby5経由で知ったのですが、Railsの開発環境を自動で作れるRails-Dev-Boxが便利です。

Vagrantという仮想マシンをコマンドラインで作れるソフトを利用して、Ubuntu仮想マシン上にRubyやGit、MySQLPostgreSQLらをインストールしてくれます。

VirtualBoxとVagrantをインストールしたら、Rails-Dev-Boxのgithubリポジトリをcloneしてコマンドを実行するだけ。後はひたすら待ちです。

どれぐらいの時間がかかるかはネットワークの速度がものをいうかなと思われます。なにせ、UbuntuRubyMySQLPostgreSQLのダウンロードが行われます。が、私がWiMAX環境で試したところ、だいたい1時間ぐらいで終了しましたので、お昼前にコマンド実行したらちょうど良い感じでしょうか。

個人的には、こういう開発環境のニーズは、特に企業内でのWindowsでRails開発環境を作るっていうニーズに適しているのではないかと思っています。会社から支給されるのはWindowsマシン。Railsの開発をやるのはWindowsではつらいし、だからといってLinuxVMWareで構築するのはちょっと手間だよなぁ・・・ってケース。

Rails-Dev-Boxは、VirtualBoxとVagrantとGitさえあれば構築できるので、Windows環境でも構築可能。Windows上でのGit環境構築がちょっと手間かな。ま、そんときにはHeroku Toolbeletを使えばOKかと。

後は、会社内でよくある話として認証Proxyと、Sambaの設定をちょっと試してみようかなと。

thoughbot LearnでのVim Webcastsが面白そう

例によって、Ruby5から仕入れた情報ですが、factory girlなど著名なGemをリリースしているthoughtbotさんがRubyRailsなどの学習教材を販売しています。

ぱらぱら〜と見てみたところ、興味を惹かれたのが「Vim for Rails Developers」というWebcasts。画面と同時なら、英語が聞き取れなくてもまぁ、何とかなりそうです^^;

15ドルと料金もお手頃・・・なはずなのですが、まだ購入できず。こういうところの優柔不断さがちょっと嫌になっている今日この頃です。

Railsユーザ必見のメソッド集

前回、「Rubyistなら知っておくべき地味だけど便利なメソッド」というエントリを書かれたジョジョエバンジェリストである @joker1007 さんが、今度は「Railserなら知っておくべき地味だけど便利なメソッド」というエントリを書かれています。

またまた知らなかったメソッドが満載だったのですが、

  • number_with_delimiter
  • Module.delegate
  • String#to_time, #to_date

は明日から使えそうなメソッドでホント助かりました。

るりまなりRails Guideなり、一度きちんと読んでおいたほうが良いよなぁと思ったエントリでした。

時刻って奥が深い

Railsで作成しているWebアプリにて、たまたまcreated_atなんかの時刻がUTCであることに気が付きました。どうせ日本国内でしか使わないイントラWebアプリなので、日本時間にしたいなぁと思っていたところ、 id:a666666 さんが書かれた「Railsと時刻」というエントリを見つけました。グッドタイミング!

こうして見てみると、時刻周りって結構鬼門だなぁ。また、date型にTimeのインスタンスを渡した場合の内容はほんとすごいはまりポイント。一度、ハマって経験しないと覚えないタチなので、今度ちょっと実験してみようっと。