タグ

ActiveRecordに関するkorinのブックマーク (5)

  • [Ruby] 例えば、ActiveRecord の connection_pool を止める - sonots:blog

    [Ruby] 例えば、ActiveRecord の connection_pool を止める - sonots:blog
  • Rails の ActiveRecord モデルテストの書き方ガイドライン - passingloopの日記

    このエントリでは,Ruby on Rails (以下 Rails)の ActiveRecord モデルテストについて,1) どこの何をテストすればよいか,2) どのようにテストを書けばよいか,のガイドラインを示します.このガイドラインは Rails 公式のものではなく,id:passingloop が使っている私的なものです.疑問・質問・批判・間違いの指摘はページ下部のコメント欄までお願いします. はじめに Rails は TDD/BDD サポートが充実した Web アプリケーション開発フレームワークです.Rails で使える Test::Unit や RSpec などといったテスティングフレームワークの使い方に関する解説も豊富にあります.しかし,「どこをどうテストすればよいのか」についての解説は,「使い方」の解説と比較して少ないように思います.もっとも,テスト一般についてどう書くかはアプ

    Rails の ActiveRecord モデルテストの書き方ガイドライン - passingloopの日記
  • [ruby][howto]クラスを生成するクラスの作り方

    Rubyな話。 「とあるオブジェクト群はそのなかでクラスタに分かれていて、クラスタごとに振る舞いが違うんだけど、そのクラスタの数が不定」という状況がたまぁ〜にある。Ruby なおまえらがよく知っている例としては Active Record パターンとかはそう。Active Record パターンだとオブジェクトは DB の行で、したがって振る舞いは DB のテーブル(かビュー)によって決まるんだけど、Active Record の基底クラスを設計している段階ではどんなテーブルがあるかなんてのは当然すべてのパターンを網羅的に作成しておく事はできない。 んで、Rails についてくる ActiveRecord::Base だと、そのへんはかつては「クラスが継承されたときにそこにフックして派生クラスに実装を注入」というインド人もびっくりの力技で解決されていて(今見たら今はそこまでじゃないが)、ま

    [ruby][howto]クラスを生成するクラスの作り方
  • Rails におけるレースコンディションの例とその回避方法 - LukeSilvia’s diary

    最近立て続けにレースコンディション問題に遭遇したのでメモ。 レースコンディション(競合状態)とは、複数のプロセスやスレッドが共有リソースに対して何らかの操作をする際に、処理のタイミングによって結果が異なってしまう状態のこと。よくトランザクションの解説の際に銀行口座の例として紹介されるおなじみのやつです。 今回は、アプリケーションの書き方によって発生するレースコンディションと、MySQL のテーブル定義時の制約不足で発生するレースコンディションについてそれぞれ紹介したいと思います。 どちらの場合も共有リソースはDB で、条件を満たすと意図しない形でデータが保存されてしまいます。 サンプルアプリケーション サンプルアプリケーションとして、簡単なアクセス解析機能付きの短縮URL ツールを考えます。 アクセス解析機能として、以下のような機能を持つとしましょう。 URL毎 にクリック数を計測できる

    Rails におけるレースコンディションの例とその回避方法 - LukeSilvia’s diary
  • ActiveRecord と ActiveSupport を使ってコマンドラインアプリを作る - ma2’s diary

    目の前にはcsvの山がある。これをrdbに突っ込まないといけない。その後railsアプリがそのrdbを使うのである。csvは何種類かあって,素直にテーブルに対応しているわけじゃない。つーことは突っ込むときにActiveRecordを使えればラクじゃろと思った。ARだけじゃなくて,便利なメソッドがたくさん入っているActiveSupportも使いたい。とりあえず何も考えずにスクリプトを書いてみる。 require 'rubygems' require_gem 'activerecord' とすればARは(ActiveSupportも)使えるようになる。でもモデルはrailsで作ったモデルをそのまま使いたい。同じ定義をコピペしてもいいんだけど,バージョンがずれたりすると困るし。 require 'rubygems' require_gem 'activerecord' $LOAD_PATH.p

    ActiveRecord と ActiveSupport を使ってコマンドラインアプリを作る - ma2’s diary
  • 1