タグ

ブックマーク / moro.hatenadiary.org (18)

  • ダミーWebサーバを作るライブラリ、wwをリリースしました - moroの日記

    近頃はWebAPIを使ったアプリケーションを作ることが増えていると思いますが、自動化テストからのWebAPIへのアクセスはどうやってますか? 私は、自分でstubしたりFakeWeb(レシピ先輩に教わった!!)を使ったりしてたんですが、イマイチしっくりこない部分がありました。で、Sinatraなぞで作ってたんですが、それをgemにまとめましたので、よろしければご利用ください。 http://github.com/moro/ww http://gemcutter.org/gems/ww 概要 ww(Double Web)はいわゆるDouble(mock, stub, spyなど)の機能を備えたダミーWebサーバを簡単に作るためのフレームワーク(笑)です。現状では、以下のようなことが出来ます。 他のAPIサーバを使う場合などに、簡単にダミーサーバを作る そのダミーサーバは自動化テストないから起

    ダミーWebサーバを作るライブラリ、wwをリリースしました - moroの日記
    walf443
    walf443 2010/01/21
  • Cucumberと表について(1) - moroの日記

    いま参加しているプロジェクトで、ひさしぶりにCukeをゴリゴリと書いています。その際、チームメンバーから「表の使い方を教えて欲しい」という要望がありましたので、勉強会用にまとめます。 「表」とは? まずはここをみてください。 http://wiki.github.com/aslakhellesoy/cucumber/multiline-step-arguments CukeではAAで表が書けます。こんな感じのフィーチャを記述します。 # language: ja フィーチャ: 表のデモ TopHatenar陥落した私としては 表の機能を解説して いっぱいブクマされたい シナリオ: 表を、テーブルとして使う 前提 以下の表をテーブルにする: | title | author | | きゅうりかわいい| もろはし | | cool cuke! | morohashi | ならば "2"件のレコ

    Cucumberと表について(1) - moroの日記
  • rake specの実行時間を短くするための簡単なお仕事です ※ただし、(何か)に限る - moroの日記

    TDDで開発している人の目下の悩みはSlow test問題、すなわちテストの実行時間がかかりすぎて辛い、という問題です。 が、ふと思うところがあって、次のようなタスクを定義していたら、なんということでしょう、劇的に早くなったではありませんか。 namespace :spec do spec_prereq = Array(File.exist?(File.join(RAILS_ROOT, 'config', 'database.yml')) ? "db:test:prepare" : :noop) desc "faster version of rake spec, but why?" task :faster => spec_prereq do %w[spec:models spec:controllers spec:views spec:helpers spec:lib].each do

    rake specの実行時間を短くするための簡単なお仕事です ※ただし、(何か)に限る - moroの日記
    walf443
    walf443 2009/12/23
    全部同じプロセスで実行してるからメモリ食いすぎてswap読んじゃってるとかじゃないかなー
  • Rails 2.0のセッション話 - moroの日記

    Rails 2.0はセッションはCookieに入れる、というのを読んで*1Cookie-sessionなんじゃらほい、と思ったのでちょっとソースを見てみました。 「ふつう」セッションに入れるようなちょっとしたデータは4K制限のあるCookieでも十分のはずだよねぇ、ということでセッションにいれる情報をMarshalしてCookieに入れちゃいましょう、というのがこの方式のポイントです。 で、Cookieに入れるっていうとユーザが自由自在にいじれるわけで、信用していいんだっけ?というのが気になったわけです。 見てみた結果はまぁ大丈夫そう。データに突っ込んだ内容とそのdigestの両方をCookieに入れて、受け付けたときはそれを検証するという手順になってるみたいです。digestを生成するときはsecretも必要になりますが、それがconfig/environment.rbで指定することにな

    Rails 2.0のセッション話 - moroの日記
  • RSpec 0.9.x の変更点私的メモ - moroの日記

    最近は主に 0.8.x を使っていた 変ったよ〜という話は聞きつつもとりあえず 0.8.x で不便を感じていなかったので(互換性あるし)で流してた Rails勉強会@東京のWikiでYuguiさんが「変わりすぎwwww」 どれどれ、と見てみて噴いた ← いまここ サンプル from 家 describe Account, " when first created" do before do @account = Account.new end # (1) it "should have a balance of $0" do @account.balance.should eql(Money.new(0, :dollars)) end after do @account = nil end end (1) describe - it と context - specify いままでは c

    RSpec 0.9.x の変更点私的メモ - moroの日記
    walf443
    walf443 2007/05/10
    変わり過ぎに噴いた
  • 走り書き: すべてのメソッドを動的に extend すると - moroの日記

    Rails で分業しようとするとコントローラとビューはなんとかならないことはない(ほげチームは hoge_controller と app/views/hoge 以下のみを自由にしていい、とか)けど、モデルはきついねぇ、なんてのを同僚と雑談。 で、ふと思ったのが、モデルもモデルにもりもりとメソッドを追加するんじゃなくて、普通にインスタンス化したあとでチームごとのモジュールを extend すれば他チームとのコンフリクトを防げませんかね、と。 Rails でよくみるような、factory っぽいのとかのクラスメソッドを追加しようとするとカオスになる気がしますが。 # hoge_controller def an_action @foo = Foo.find(params[:id]) # @foo.respond_to? :methods_for_hoge_action #=> false @

    走り書き: すべてのメソッドを動的に extend すると - moroの日記
    walf443
    walf443 2007/03/08
    Modelにメソッドを足すのは影響力が大きすぎるのでControllerでインスタンスにextendしてモデルを拡張するというアイディア
  • spec を書くときに float の誤差を無視したりしなかったり - moroの日記

    先週気づいていればもっと楽にできたのに。軽くはまったところの解決法はすでに家ドキュメントにありましたよ。すみません>ボス context "循環小数 (1 / 3.0) のspecを書く場合" do specify "0.33 に近く、誤差は 0.004 以下であること" do ( 1 / 3.0 ).should_be_close 0.33, 0.004 end end context "浮動小数点の誤差を含む計算への spec を書く場合、0.1を10回足しあわせた値は" do setup do @ret = 0.0 10.times { @ret += 0.1 } end specify "1.0に近く、誤差は0.1以下であること" do @ret.should_be_close 1.0, 0.1 end specify "1.0と*同じ*ではないこと" do @ret.shoul

    spec を書くときに float の誤差を無視したりしなかったり - moroの日記
    walf443
    walf443 2007/01/13
    RSpecでランダムな数値をテストする。素晴らしい。前自分の記事にあとで書くとしてたのはこれのことだろうか。これを押し進めるとt検定とかf検定をやってくれるところまでできるかも。
  • ABD飲み会実施しました - moroの日記

    羽生さんはじめ、出席してくださった皆様、ありがとうございました。おかげさまで無事に開催できました。 今回は羽生さんがABDについてまとめてくださった資料をいただいたんですが、それを見ながらお話を聞いて、これまでの理解がそれなりに正しかったことを確認できました。ただ、実戦投入はまだ早いかもしれないという由、確かに前にちょっとだけ試した感じでは、(少なくともRailsでは)まだ難しい感はありました。ERDレッスンがちょうど良いというのも実感してます。 で、Rails界隈の人がABDに興味津津なのは何か不思議、という話を高井さんがおっしゃってたんですが、それはたぶんRailsではDB設計の部分がすっぽり抜けてるんですよね。 「DBのデザインを決めたらあとはカッコよくいけるよ」というDavidさんですが、じゃあどうやってデザインすんのよ、と。いい替えると、他の部分が楽になりすぎたので、必然、残りの

    ABD飲み会実施しました - moroの日記
  • 黄色信号の話 - moroの日記

    まずはこちらを。 http://idm.s9.xrea.com/ratio/2006/11/21/000549.html なんかすごくすっきりしました。Development を Drive するためのテストについてはすっかり同意。ぐぅの音もでないくらい。 あと、Rails勉強会で出た黄色の話をちょっと捕捉すると、開発時だけじゃなく、バグがあがってきたときなんかに、 「現在の仕様では動かないこととする、が、今後のエンハンス対象としてはコードで表現しておきたい」ってのはよくあるので、それを表現するステータスが欲しいね、というコンテキストも後半Test::Baseのときにあって、私自身、黄色の話はそのへんが両方混ざってるのかな、と。 開発時と保守のときでは興味の対象はちょっと違ってて、後者の場合は思いもよらないようなパターン含め、外から(ブラックボックステスト、ね)入力と出力を流し込んでやりた

    黄色信号の話 - moroの日記
  • moroの日記 - Railsでテストを書く勘所

    昨日はOSCに行ってきました。セミナーやブースはほとんど行かず、例によってRubyの会のあたりでだらだらしてたわけですが。 思いがけず師匠の師匠、id:t-wadaさんにもお会いできてびっくり。 で、そこでRailsとTDD(BDD)の話なんかしたので、一週間で思ったことをつらつらと。たぶん不正確というか、理解の足りないところもいろいろあるので、そのへんのツッコミをいただけると感謝です。 書いてたら長くなったのでagenda モデルのテストでは、とにかくロジックを書いたらテストを書く*1。def..endブロック(wを書いたら必ずテストもあるはず。 RailsのMVCコンポーネントの中では一番テストし易いので、そういう意味でもモデルを厚くすると幸せになりやすい。 コントローラのテストでは、基的にリクエストを受けてから表示対象のオブジェクトを導出するまでをテストしたい。 ビューのテストでは

    moroの日記 - Railsでテストを書く勘所
  • オブジェクト倶楽部 2006夏イベント - moroの日記

    いってきました。暑かった。熱かった。 やりすぎだろう、と思うくらいの好天の中、オブラブに初参加してきました。 とりあえず予告どおりid:habuakihiroさんのサインをゲット。もうこれで満足です。お昼前でバタバタしてたとか、サインをもらいながら緊張しまくったとかであまりお話ができなかったのは残念でしたけど。 Rails勉強会に来ていただいてERDレッスンのお話をお願いできないかなぁ、と。次回のRails勉強会セッション案をみる限り、かなり羽生さんのホームになる見込みですので。 色々な刺激を受けたんですが、あとから見返して覚えておきたいことをいくつか。 『仕事で必要なことはフローチャートで学んだ』(羽生さん) 以下ノートからの起こし。 フローチャートは実は二次元 二重箱(モジュール/定義済み処理)を丁寧に展開していけば、結局ツリー構造を内包している。 モジュールかをきちんとしないからフロ

    オブジェクト倶楽部 2006夏イベント - moroの日記
    walf443
    walf443 2006/07/09
    class_evalブロックとりたいについて。
  • moroの日記 - 新しくRailsアプリを作るときにやること

    なんか色々はまったのでメモです。 一見まとめに見えますが、実は「早い段階でやっとけばよかった」と後悔したり、向こう数日以内に後悔する予定のところをピックアップした愚痴だったりしますけど。 文字コードはUTF-8を使うのが無難。 テーブルの文字コードもUTF-8に。latin1にEUC-JPなデータを入れてしまうと大変。 Ajaxを絶対に使わないならSJISとかでもいいかも。 ケータイを考慮する場合も、around_filterを使って入出力の文字コードを変換するほうが楽だと思います。実際にはまった人の声も聞きたい。 vimを使う場合はこちらもどうぞ。 とりあえずバージョン管理はSubversionをお薦め。 Capistrano(旧名:SwitchTower)でdeployする場合、${RAILS_ROOT}/logをリポジトリに入れるとはまる。${RAILS_ROOT}でsvn:igno

    moroの日記 - 新しくRailsアプリを作るときにやること
  • date_selectで:indexが使えない気がするので力業で逃げました - moroの日記

    ActionViewのフォームヘルパーの多くは、:indexオプションを指定することで、複数のフォームを作成することができ、コントローラでは{index_value => {:key => value }なネストしたHashとして取り出すことができます。 しかし、date_selectでは:indexオプションが無視されてしまうため、クィックでダーティーでどうかと思う回避策をとっています。 例えばViewに <%= text_field "person", "name", "index" => 1 %> <%= text_field "person", "name", "index" => 2 %>と書くと <input type="text" id="person_1_name" name="person[1][name]" value="<%= @person.name %>" />

    date_selectで:indexが使えない気がするので力業で逃げました - moroの日記
    walf443
    walf443 2006/04/23
    フォームを作成するヘルパーで:indexを使えないものを使えるようにするためのHack
  • 第5回Rails勉強会@東京の議事メモ - moroの日記

    早いものでいつのまにかもう第5回のRails勉強会に行ってきました。今回は過去最高の参加人数ということで、見慣れた方も初めて見る方もたくさんいらっしゃいました。このイキオイで盛り上がっていきたいものです。 今回はRailsレシピのネタ出しセッションと、Railsから使えるグラフ作成ライブラリのセッションに参加しました。 前半セッション : 『たのしいRailsレシピ』(仮)打ち合わせ 前半は今秋?出版予定の『たのしいRailsレシピ』についてのネタ募集をしました。詳しい話は、今回もyuguiさんが素晴らしい議事録を書いていらっしゃいますのでそちらへのリンクを。 みなさんからのお話を聞いて思ったのはvalidate_*回りへの関心がすごく高いんだなぁ、ということ。バリデーションはどうしても泥臭くなるところなので、具体的な正規表現の書き方とか、現場で使えるレシピを多く盛りこめたらなぁ、と思いま

    第5回Rails勉強会@東京の議事メモ - moroの日記
    walf443
    walf443 2006/04/23
    Railsでグラフ関係のライブラリの扱い方について
  • 非ActiveRecord::Baseなクラスからvalidationを使ってみました - moroの日記

    Railsの便利機能の中でもかなり注目度の高いActiveRecord::Base#validates_*によるバリデーションですが、これをDBに保存する場面以外でもつかえないか、というのが今回のトピックです。 ユーザからの入力をDBではなく通常のファイルや帳票に落としたり、単に画面に表示させたり、他のWebサービスに送りつけたりする場面で、ARのvalidationが使えると便利だろうなぁ、と。 DBが必須になる*1validates_associatedとvalidates_uniqness_of以外についてはうまく動かせましたのでメモを。 実際のブツはこちらからどうぞ。 2006/05/24 23:00追記 id:babieさんからのご指摘をうけ、アーカイブ内のソースのtypoを修正しました。 あまりにしょーもないtypoなので、なかなか恥ずかしいです。 まずは動作を サンプルクラス

    非ActiveRecord::Baseなクラスからvalidationを使ってみました - moroの日記
  • [rails][lighttpd] rails under ”production”.

    勉強会では流れてしまったんですが、せっかく作った資料なのであげておきます。 (lighttpd or apache)+fastcgiでrailsを動かすための各種設定をまとめてみました。 資料はこちらからどうぞ。CreativeCommonsの帰属ライセンスで公開します。 PDF版 OOo Impress版 Apacheのほうは意外と苦労なく動いたんですが、lighttpdを複数共存させるやりかたでちょっと苦労しました。 ポイントとしては $HTTP["url"] =~ (パターンマッチ)としてURLによってerror-handlerを変えること(p.9) error-handler-404で設定したものとfastcgi.server直後のextentionで指定するものを一致させること(実在しないファイルでもOK)(p.9) config/environments/production.

    [rails][lighttpd] rails under ”production”.
    walf443
    walf443 2006/01/31
    実際にRailsを運用するときの鯖の設定
  • rails勉強会議事メモ - 前半セッション SwitchTowerの光と影 - moroの日記

    rails勉強会いってきました。今回もいろいろ勉強になった&刺激を受けることが山盛りでした。とりあえず覚えてる範囲での議事メモを。 前半セッションではSwitchTowerの光と影ということで、id:secondlifeさんが某企業での体験を元に、SwitchTowerの実装のダサいところと、大規模システムでのdeployツールとしてSwitchTowerを使った場合の落し穴をいろいろ紹介してくださいました。 SwitchTowerの実装の影 大規模で使うときの影 まとめとか感想とか SwitchTowerの実装の影 rakeから呼び出せるようにlib/tasks/switchtower.rakeでSwitchTowerを呼び出すためだけのタスクを足している。冗長でダサい。 その上、switchtowerコマンドを決め打ちしているので、switchtowerのコマンドが備えている柔軟性*1

    rails勉強会議事メモ - 前半セッション SwitchTowerの光と影 - moroの日記
    walf443
    walf443 2006/01/30
    switchtoworのダークサイドについて
  • moroの日記 - 動いた!

    一昨日からなやんでいた、サブディレクトリ配下でrailsアプリを動かす(1サーバで複数のrailsアプリを動かす)方法ですが、ようやく動きました。 コメントをくださったid:osakanasさん、どうもありがとうございました。 教えていただいたhttp://blog.lighttpd.net/articles/2005/11/23/lighttpd-1-4-8-and-multiple-rails-appsを見ながらやってみました。心残りなのはstrip-request-uriを使ったlighttpd側の設定ではうまくいかず、railsアプリ側での対応となってしまったこと。もうちょっと調べる余地がありそうです。 とりあえずこのへんのテーマでRails勉強会のセッションに立候補してみましたので、興味があるかたはそちらもよろしくお願いします。 このへんはあとでちゃんとまとめまたいと思いますが、

    moroの日記 - 動いた!
    walf443
    walf443 2006/01/28
    サブディレクトリでRailsを動かす方法
  • 1