Ruby on Rails で JSON をパースする

Dec 14, 2012  
結論 ActiveSupport::JSON.decode を使う 参考 How do I parse JSON with Ruby on Rails? - Stack Overflow 実際に使った clips/app/models/user.rb at master · tanaka51-jp/clips · GitHub 続きを読む →

rspec の shared_context をすべての example に適用する

Dec 14, 2012  
clips で webmock を使って Github API との通信部分をスタブしたのだけど、このスタブ定義をすべての example に適用させた時の記録。または shared_context をすべての example に適用する方法。 参考 rspec-users - using shared_context in a global way 結果 clips/spec/spec_helper.rb at master · tanaka51-jp/clips · GitHub clips/spec/support/stub_http_request.rb at master · tanaka51-jp/clips · GitHub やり方 (というかほぼ参考にしたページの日本語約) まず、’RSpec.configure’ 内で、すべての example に適用させる before を定義できる。 だけど、let だとか RSpec の DSL は ‘RSpec.configure’ 内では使えない。だから、’RSpec::Core::SharedContext’ を extend した module をつくって、configure 内ではその自作 module を include させるようにすると良い。 で、具体例。 # spec/spec_helper.rb RSpec.configure do |config| config.include StubHttpRequest end # spec/support/stub_http_request.rb require 'rspec/core/shared_context' module StubHttpRequest extend RSpec::Core::SharedContext before do stub_request(:any, /.*api\.github\.com.*/). 続きを読む →

RSpec Best Practice

Dec 14, 2012  
RSpec の最大の魅力は、let だと思うようになった。let を使った見通しのよい、DRY なスペックの書き方の覚え書き。 具体例 describe User do describe '#admin?' do subject { user.admin? } let(:user) { FactoryGirl.create :user, admin: admin } context "when user is administrator" do let(:admin) { true } it "returns true" do expect(subject).to be_true end end context "when user is not administrator" do let(:admin) { false } it "returns false" do expect(subject).to be_false end end end end ポイント describe と context を明確に使い分ける let の遅延評価を利用して、context 直下は let 変数によるパラメータの操作だけにし、before などは一切書かない このルールを守るとテストの見通しがすごく良くなる context 直上の describe は以下のルールを用いている subject, let(/let!), before, it, context の順で書く(let と let! 続きを読む →

Cucumberファーストインプレッション

Oct 1, 2012  
Cucumberのメモガキ 前準備 とりあえず Emacs の拡張を入れる https://github.com/michaelklishin/cucumber.el はじめる! Cucumber を読む http://tatsu-zine.com/books/cuke The RSpec Book を読む http://www.amazon.co.jp/dp/4798121932/ 実践テスト駆動開発を読む http://www.amazon.co.jp/sim/4798124583/2 実践 Guard で自動実行させる まず、シナリオの粒度に悩む 悩んでも仕方無いから、とにかく書いてみる Cucumber の本である上の2冊は情報が古いため、そのままやっても動かないことがある cucumber-rails はデフォルトのステップ定義を用意してくれない! tag の指定方法が変わっている! –tags @piyo で指定できる etc, etc, etc,,,, 日本語情報が少ない(古いものが多い)から、英語で調べるのが吉 でも結局公式wikiで答えが見つかる事も多い https://github.com/cucumber/cucumber ステップ定義は Capybara との戦いになりがち やっぱり調べ物には公式wikiが良かったりする https://github.com/jnicklas/capybara Capybara には HTTP メソッドの PUT と DELETE がなくて詰みかける @javascript タグをつけるのが正解 Capybara の JS-driver は capybara-webkit が良い Qt を入れる必要があって若干ハードルが高いけど、selenium よりこっちが良い 何より、ブラウザが立ち上がらないのが素晴らしい Capybara さんには、save_and_open_page というメソッドでその状態の HTML をブラウザで開く機能があってめっちゃ便利 前提 /^デバッグ$/ { 続きを読む →

私の最初のRuby会議

Sep 18, 2012  
僕がRubyのコミュニティの存在に気がついたのは、2011年の10月過ぎだと思います。株式会社万葉に入ってからですね。 それまでは、こんなコミュニティがある事に気付きもしなかったし、関わろうとも思っていなかったです。 そんな僕が、Ruby会議の当日スタッフをやって、とっても泣いたという、聞く人によってはどうでも良い話をこれから書いていこうと思うわけです。 当然、酔っ払っています。Matz さんが「コードを書く事がアイデンティティだ」と言った事に加えて、僕は酒を飲むことがアイデンティティだからです。 さて、実は昨日ブログを書いたけれども、そんなにたいした事は書いていませんでした。 それは、何か多くを書くと薄れるものがあると思ったからです。 一応、最後に随時更新予定とあるけれども、予定という言葉ほど不確かなものはありません。 現実に戻った 9⁄18(火) の仕事終わりに @theta777 さんに飲みに連れて行っていただいた帰りに @koichiroo さんからこんなツイートが届きました。 https://twitter.com/koichiroo/status/248039536016363520 (なんかアメとムチな感じのやりとりが続いてるけど、気にしない事にする) なんていうか、僕はすごくかっこつけしい(という言葉も結構甘い言葉かもしれない)で、その事について札幌Ruby会議に行く前日に弊社の @tatsuoSakurai さんと @publichtml さんに説教(という名の愛の鞭)をいただいたんですね。 まぁだけど人が Skype チャットで変わる位ならこの世の中どんだけ良い世の中になるんだって話で、僕は少し位は意識していたけれども、会社に夏休みをもらって少し速めに現地入りして北海道旅行している間に鞭の痛みも事も忘れて、はしゃいでいた訳です。 それで、正直、当日スタッフ業を舐めてかかって札幌Ruby会議当日を向かえました。北海道旅行でテンションあがってましたし。 ええ、こんなとんでもなく大変な仕事だと思いませんでした。 日中サンサンと太陽光が降り注ぐ中道路に突っ立って道案内して、廊下に立って道案内して、ホールの後ろに立って見守って、辛くても人前では笑顔でいなきゃと思うし、夜に飲み会がある割に朝が速いし、2日目の深夜に激辛スープカレーを食って3日目の午前中はお腹壊すし(自業自得)、 スタッフ業やってる最中は最低限の見たいセッションだけ見たけどなんか TL 上ですっげー盛り上がってるセッションを見逃したりして悔しい思いをしたり、なんていうか、とにかくすっごい疲れた。 でも、それでも頑張れる何かが札幌Ruby会議にはあったんですよね。 何か人を突き動かす大きな力があったような気がしています。 少なくとも僕はその力に動かされていたし、実行委員もスポンサーさんも当日スタッフも参加していたみなさんも、多くの人がそんな正体不明の力に突き動かされていたと思っています。僕の勝手な想像ですが。 だって3日間も異国の地(こんな事言うと北海道民の人達には怒られるかもしれないけれども、多くの人にとってはそうであったはずなのです。)に留まって、Rubyとか言うコンピュータ上の一言語の為に集まって話を聞いたりスタッフ業をしたりするなんて、狂気の沙汰ですよ。 でも、それができて、大きな事故もなく札幌Ruby会議が終わった。 僕は最終日のスタッフ業を、ルーム1の方で須藤さんのセッションを聞きたかったなーと思いつつもユーストを撮る作業をしていて、英語の発表であんまり良く分からずもすっごく良いセッションで、ああ、こっちを聞けて良かったと思いつつ、最後のしまださんの締めの言葉をユーストから聞いていたんです。 そんな事をしつつ、僕がやったことって何だろうと思うと、上でグチグチ言っていた事位で、なんだろう、これって僕は何も生み出していないんですよ。 で、僕はシダラさんの事は札幌Ruby会議で出会うまで何も知らなかったのですが(すみません)、本当に実行委員の方達が用意してくれたレールに乗っかっていただけなんだなーと、シダラさんの5年前に書いていたブログとまったく同じ事を思った訳です。僕は最後にそれに気付いて、なんて幸せな事なんだろうと思いました。 最後のスタッフの懇親会で、島田さんからすっごく大変だったという話を聞きました。嫌な事もあったと。島田さんは3日間、ずっと疲れた顔をしていましたが、僕がお疲れさまですと言うと笑顔でお疲れ様ですと返してくれて、実はそれにすっごく救われたりしてました。 島田さんをはじめ、実行委員の方々は本当に大変だったと思います。 会議が始まると不思議と大きな力が働いていたので、僕なんかはその力に任せて動けば良かっただけなんですが、実行委員の人達はそんな力が働いていないと思われる中で、事前にたくさんの準備をしていて(MLに流れていたのをなんとなく眺めていただけだけど、すごく大変なんだと思った。皆さん自分の仕事があるはずなのに…)、 更に東京に来て当日スタッフミーティングをしてみたりなんかもして、もう本当に、僕は実行委員の人たちが何をもって動いていたのかが分からないんです(これは単純に僕が想像しているだけの話なので、もしかしたら始まる前から大きな力が働いていたかもしれませんが)。 だからこそ、得に実行委員の方達にはすごくお礼を言いたいと思っています。本当にありがとうございました。 僕はただ単にレールに乗っかっただけで、僕が行ったら既に刺身と日本酒がおかれていた状態で、そんな感じで懇親会に参加しました。さっきも言ったとおりに僕はかっこつけしいでその割に人見知りして更に悪い事に引きこもりなのですが、そんな中でもネット上では知っていたけど初めて出会った 刺身☆ブーメランさん、宮川さん、sumim さん、某A社の西川さん、某元中卒フリーターのような著名な方々とお話できた事がすごくうれしかったです。え、俺こんな人たちと話していて良いの?状態でした。死ぬかと思いました。でも生きてます。生きてるって素晴らしい。 後は、try(:english) では滅多にやることのない英会話ができてボロボロになったけど楽しかったし、RailsGirlsTokyo でお世話になった原田さんと英語の勉強法についてお話できてすごく為になったし(とにかく、飛び込む事が大切だという事が分かった)(あと原田さんが米国に戻ってやる仕事が僕の好きなプログラミング言語でなんか無性にうれしくなった)。 セッションではたくさんの勇気をもらった。多くは聞けなかったけれども、得に Matz さんの「コードを書く故に我あり」というメッセージはすごく心に響きました。他には永和さんの方々のセッションは今実際に悩んでる事に対してのとても有用な解が得られたし、刺身さんのセッションにとても共感できたし、タシツキミハウさんのセッションでプログラマとして大きく成長したいと思えた。もう、何一つ無駄なセッションはなかった。 そして、これだけの勇気をもらえて、他の人にもたくさんのパワーを与えて、そんな札幌Ruby会議に当日スタッフとして運営に参加する事ができて、僕は幸せなんです。幸せな気持ちになって涙を流す事は、すごく久しぶりなのです。(直近で同じくらい涙を流したのは、長年付き合った彼女と分かれた時だと思う。これは幸せな涙じゃあないけど。ぼかぁアレから涙が枯れた人間になっていたのだ) 最終的に、東京(実は千葉だけど)の家に帰って、洗濯しながら、当日のユーストを流し見して涙を流し、ポールさんのブログを読んで涙を流し、シダラさんのブログを読んで涙を流していた訳です。 当日スタッフの同じ班になった、班長のさかじさんをはじめ、くろさん、あきーにょさんにはとてもお世話になりました。ありがとうございました。 後は、一緒のスタッフ宿に泊まった、おがさわらさん、ポールさん、櫻井さん、ほっかいさん。ありがとうございました。 全員の名前をあげられなくて申し訳ないですが、しまださんをはじめ多くの実行委員の方々、他の班の当日スタッフの方々、ありがとうございました。 僕にからんでくださった多くの参加者の方々、ありがとうございました。 僕が札幌Ruby会議でここまで感動できたのは、たくさんの人たちの支えがあったからだと、そう思いながらまた涙が出てきております。 これだけの事を思っていながら、昨日の僕はかっこつけてすべてを書こうとしなかったんですね。薄れるってお前何様だ!って話ですよ。 それで、冒頭の件に戻るんですけど、僕は最終日のスタッフ飲み会で、確かにシダラさんにそんなような事を言ったんですよ。すごく酔っ払ってた。でも、本当に正直な気持ちだった。 そしたら、それに反応してくれた。 かっこつけてる場合じゃないんだと思いました。 思ってる事は言葉にしなければ伝わらない。 それで、帰ってきて急いでこのブログを書いています。 僕の初めてのRuby会議は、なんか良く分からんけど、とにかく僕に勇気と感動を与えてくれた、人生で初めてのイベントです。 これまで関わってくれた多くの人達に感謝しています!ありがとうございました! これからも Ruby 続きを読む →