![[Ruby] 例えば、ActiveRecord の connection_pool を止める - sonots:blog](https://cdn-ak-scissors.b.st-hatena.com/image/square/da78a05937633f7a2b4b2219826151c370cd607b/height=288;version=1;width=512/https%3A%2F%2Fparts.blog.livedoor.jp%2Fimg%2Fusr%2Fcmn%2Fogp_image%2Flivedoor.png)
このエントリでは,Ruby on Rails (以下 Rails)の ActiveRecord モデルテストについて,1) どこの何をテストすればよいか,2) どのようにテストを書けばよいか,のガイドラインを示します.このガイドラインは Rails 公式のものではなく,id:passingloop が使っている私的なものです.疑問・質問・批判・間違いの指摘はページ下部のコメント欄までお願いします. はじめに Rails は TDD/BDD サポートが充実した Web アプリケーション開発フレームワークです.Rails で使える Test::Unit や RSpec などといったテスティングフレームワークの使い方に関する解説も豊富にあります.しかし,「どこをどうテストすればよいのか」についての解説は,「使い方」の解説と比較して少ないように思います.もっとも,テスト一般についてどう書くかはアプ
Rubyな話。 「とあるオブジェクト群はそのなかでクラスタに分かれていて、クラスタごとに振る舞いが違うんだけど、そのクラスタの数が不定」という状況がたまぁ〜にある。Ruby なおまえらがよく知っている例としては Active Record パターンとかはそう。Active Record パターンだとオブジェクトは DB の行で、したがって振る舞いは DB のテーブル(かビュー)によって決まるんだけど、Active Record の基底クラスを設計している段階ではどんなテーブルがあるかなんてのは当然すべてのパターンを網羅的に作成しておく事はできない。 んで、Rails についてくる ActiveRecord::Base だと、そのへんはかつては「クラスが継承されたときにそこにフックして派生クラスに実装を注入」というインド人もびっくりの力技で解決されていて(今見たら今はそこまでじゃないが)、ま
最近立て続けにレースコンディション問題に遭遇したのでメモ。 レースコンディション(競合状態)とは、複数のプロセスやスレッドが共有リソースに対して何らかの操作をする際に、処理のタイミングによって結果が異なってしまう状態のこと。よくトランザクションの解説の際に銀行口座の例として紹介されるおなじみのやつです。 今回は、アプリケーションの書き方によって発生するレースコンディションと、MySQL のテーブル定義時の制約不足で発生するレースコンディションについてそれぞれ紹介したいと思います。 どちらの場合も共有リソースはDB で、条件を満たすと意図しない形でデータが保存されてしまいます。 サンプルアプリケーション サンプルアプリケーションとして、簡単なアクセス解析機能付きの短縮URL ツールを考えます。 アクセス解析機能として、以下のような機能を持つとしましょう。 URL毎 にクリック数を計測できる
目の前にはcsvの山がある。これをrdbに突っ込まないといけない。その後railsアプリがそのrdbを使うのである。csvは何種類かあって,素直にテーブルに対応しているわけじゃない。つーことは突っ込むときにActiveRecordを使えればラクじゃろと思った。ARだけじゃなくて,便利なメソッドがたくさん入っているActiveSupportも使いたい。とりあえず何も考えずにスクリプトを書いてみる。 require 'rubygems' require_gem 'activerecord' とすればARは(ActiveSupportも)使えるようになる。でもモデルはrailsで作ったモデルをそのまま使いたい。同じ定義をコピペしてもいいんだけど,バージョンがずれたりすると困るし。 require 'rubygems' require_gem 'activerecord' $LOAD_PATH.p
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く