RubyWorld Conference 2015の動画を見ています。 18分ほどの短めのセッションでしたが、とても面白かったです。 MySQLにしか製品していなかった製品を大人の事情でPostgreSQLにも対応したというお話。 ORMとしてSequel を導入したがいろいろ問題があり、それらをいかにして乗り越えたという心温まるおエピソードでした。 A-5-1 「非Railsアプリケーションのマルチデータベース対応と高速化の取り組み」 Sequel導入 結果 遅くなった! 原因 ARパターンでDB接続時にテーブル構造を取得 Unixデーモンモデル(接続ごとに子プロセスをfork) マルチスレッド化 プロセス生成コスト減 クラスメソッド クラス変数 グローバル変数 シングルトン PID コネクションプール 結果 遅くなった!! 原因 Rubyは1プロセスが同時に1CPUしか使えない 複数ス
このエントリで書いた内容は、ほぼ Growing Rails Applications in Practice の内容が元になっています。英語ですが、ここで挙げた内容以外にもコードを綺麗に保つテクニックが書かれており、かつページ数も少なく読みやすいです。コードを綺麗に保つのが好きな方は一読してみることをおすすめします。 はじめに Rails で fat model を避けるための方法は、7 Patterns to Refactor Fat ActiveRecord Models を始めとして、多くのやり方が存在します*1。 validation や callback は ActiveRecord(以下AR) を継承せずとも利用することができます。7 Patterns to Refactor Fat ActiveRecord Models の 「3. Extract Form Objects
Ruby 製バッチ処理を省メモリ化した - 彼女からは、おいちゃんと呼ばれています 少し前に Ruby 製の バッチ処理 を省メモリ化したときの話をメモしておきます。 どのような バッチ処理 だったか 動画共有サイト にアップされた動画がオトナの事情によって削除されることがしばしばあ... http://blog.inouetakuya.info/entry/2015/07/26/204320 ActiveRecord の each は全件、find_each はデフォルトで1000件をインスタンス化するので、HTML をパースしたDOMツリーが1000件もメモリに乗ったらそりゃ OOM Killer で殺されても文句は言えないかもしれない。 ActiveRecord::Batches The find_each method uses find_in_batches with a bat
こんにちは、鈴木です。 先日、Rails 4.1.0.rc1 がリリースされました。 リリースノートをパラパラを見ていたら ActiveRecord enums という新機能があったので試してみました。 ActiveRecord enums とは 会員のデータを保持する users テーブルを作成して、会員ステータスを保持する status カラムを用意して、その値が 0 なら仮登録、1 なら本登録、2 なら退会済みにしよう、・・・ということって良くありますよね? ActiveRecord enums は、モデルクラスでこんな風に使います。 class User < ActiveRecord::Base # ステータス: temporary (仮登録), active (本登録), resign (退会). enum status: %i(temporary active resign)
連載目次 前回の「ActiveRecordにおけるモデルの「関連」とコールバックの使い方」までではMVCモデルにおけるRailsのモデルをつかさどる機能を理解できたかと思います。 今回は、MVCモデルにおけるコントローラーをつかさどる「ActionController」の機能について解説していきます。ActionControllerは開発者が実装する各コントローラーの親クラスである「ApplicationController」の親クラスです。従って、開発者が実装する各コントローラーはActionControllerのメソッドを継承しています。 ActionControllerの機能に迫る前にコントローラーの基本について「book_library」のディレクトリ「06」を基におさらいしておきましょう。 まずコントローラーの基本についておさらい サーバーにリクエストが来ると、ルーティングによっ
Rails3では,ActiveRecordを使ったデータの取得方法にfind, find_by_XXX, find_all_by_XXX, all, whereでの絞り込みなど色々ありますが,それぞれ微妙に異なった挙動をします. ちょろいサンプルアプリを書く位ならあまり気にならない所なのですが,きちんとアプリを書く上では以外と大事なところ(後述)なので,ここいらでまとめておきます. Rails使っている人で hoge = Hoge.find(params[:id]) || Hoge.new とか書いて思った様に動かないぞ?とかハマった人向けです. 取り上げるのはfind, find_by_XXX, all, find_all_by_XXX, whereです.Railsのバージョンは3.2.8を使っています. 以下の説明では,以下のクラスが存在することを前提とします. class Hoge
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く