ブログみるアプリ
日本中の好きなブログをすばやく見られます
無料ダウンロード
ブログ村とはIDが異なります
メインカテゴリーを選択しなおす
フォロー
trigger ベースの履歴
railsを使って色々なアプリを作っているが、どのアプリでもmysqlで全てのテーブルの変更履歴を取るようにしている。なにかの不具合でデータがおかしくなった場合などに調査、復元がしやすいためだ。業務アプリで履歴データが無い、というのは今となっては考えられない。 履歴を実...
2013/07/05 23:28
Ruby 2.0 の refinement で DCI?
ruby 2.0 では refinement という機能が追加されています。これってDCIの実装に使えるのかも?というのが今回のテーマです。仕様が難しいので、実際動かしてみないと判断はできませんが。 注意:refinement は2013/02/27 時点でexperimen...
2013/02/27 11:00
考えるという事は問いを立てるという事
「何がわからないか」がわからないをそのままにしておかない技術モドキ これと似た内容(劣化版)を昔社内の勉強会で発表したことがあるので、自分の言葉で書いてみたいと思った。 その時の発表のタイトルは「考えるとは何か」というものだった。考えるとはどういう行為なのか?入力は何で出...
2013/02/17 23:59
view table を使って 1+N 問題回避
今回はtipsの紹介的な話。 検索結果で表示する内容が簡単な association だけでは取ってこれないような場合の解決方法について考える。 例えば、ユーザの検索結果にユーザの投稿数を表示する、という場合を考える。rails には counter cache colu...
2013/02/04 00:35
Arel scope の OR
http://dodemoyoiblog.blogspot.jp/2012/09/scope.html 上の記事でも書いたが、Arel の scope は便利だ。これは何度言っても言い足りない。 細かいことは元記事を読んでもらうとして、 scope にビジネスロジック...
2012/12/03 22:42
入力フォームの設定化
現在開発しているプロジェクトでは、入力フォームの設定を外部化している。 例えばhamlで入力フォームを書くと大体以下のようになるはずだ。 = f.text_field :name, :class => "Name" = f.text_field :price, ...
2012/11/24 21:01
model の decorator の話
最近の sapporo.rb などでは ActiveDecorator など、model の Decorator の話で少し盛り上がっているようだ。view に関わるコードをどう整理するか?という話について、共通見解が定まってきたということだろう。 rails の MVC に...
2012/10/01 10:16
haml のうまい使い方
1年ほど前から業務アプリの開発に haml を使っている。 世の haml の紹介では html って閉じタグが無いからすっきり書けるよ!とか.Hogeって書くだけで<div class="Hoge"> になるよ!簡単!みたいなレベルで紹介されているが、haml の真価はそん...
2012/09/26 22:29
model を物理レイヤーと論理レイヤーに分割する。
エンタープライズrailsという書籍に、モデルをphysical レイヤーと logical レイヤーに分けろ、というアドバイスがあった。この分け方が絶対かといわれるとよくわからないが、私も基本的にはこの考え方には賛成だ。 モデルのレイヤーを分けて考えるということはrails...
2012/09/26 22:04
to_sql のうまい使い方(2)
前回の記事 で、通常の ActiveRecord のクエリではパフォーマンスがよくないという場合に、うまくARELのよさを生かしつつ find_by_sql で高速なクエリを実行するための方法を紹介しました。 to_sql と find_by_sql でクエリを高速化する方法と...
2012/09/23 12:40
resque と delayed_job
resque と delayed_job の違いについての質問に対する回答がなかなかよかった。 http://qa.atmarkit.co.jp/q/2406 個人的には、resque って長いトランザクションの中からキューを突っ込んだ場合、トランザクションが完了するま...
2012/09/21 01:03
DCI (data context interaction)
DCI アーキテクチャという設計についての考え方がある。数年前から scala 界隈で盛り上がっていた記憶があるが、最近は ruby/rails 界隈でも盛り上がっている模様。 先日の札幌 ruby 会議で角谷氏が発表を行っている。 rubykaigi http://s...
2012/09/19 23:06
ActiveRecord の changed? のバグ
ActiveRecord にはちょっとひどいバグ?がある。 ActiveRecord は save するときに実際に変更のあったカラムのみ sql の update 文に書き出すようになっている。blob を持つようなモデルやカラム数がやたらと多いモデルの場合には sql...
2012/09/16 15:36
コードの重複を排除するのもほどほどに!
コードの重複を排除する、ということは良いコードを書くための指針として昔から言われている。全く同じ構造のコードを1000行にわたって繰り返すことがばかげていることは誰にだってわかる。ruby はそのようなコードの重複を排除することに優れた言語だと思う。メタプログラミングを工夫するこ...
2012/09/15 23:09
before_save はやっぱり使いづらい
before_save は filter としての役割と、hook としての役割の両方が重なっている。それが便利でもあるが、バグを生む原因にもなる。 before_save はそのブロックが false を返すと save の実行自体をやめてしまうというフィルターとしての役割...
2012/09/13 17:04
scope
AR の scope はとても良い。AREL によって表現力が高まってからは本当に使い勝手が良い。 scope は何が良いかというとビジネスロジック上重要な概念に名前を付けてパッケージ化できるところがよい。複雑な sql を書いた場合、join, where、group by...
2012/09/11 14:35
before_saveの弊害
before_save, after_save は中々便利な機能で、このような何かをフックに勝手に処理が走ってくれる、という仕組みは小規模なアプリでは大変楽にプログラムが書ける。save すれば必ず処理を走らせてくれるのだからうっかり忘れることが無い。 しかし、ある程度大きな...
2012/09/11 11:59
model の module 化
巨大な rails アプリを作っていると、すべての業務ロジックをモデルに書くというrails標準の考え方はすぐに破たんする。最もコアのモデルだと数千行を簡単に超えてしまうためである。長すぎるメソッドが良くないのと同様に、長すぎるクラスもよいものではない。 そこで modu...
2012/09/11 09:52
ghostscript の dithering がひどい件
gs で pdf => 白黒tiff に変換すると、文字部分は問題ないが画像部分に dithering が発生してかなりひどいクオリティとなる。細かい文書だと読むのは不可能になってしまう。 gs -dBATCH -sDEVICE=tiffg3 -dNOPAUSE -sO...
2012/09/11 09:42
ruby の Iconv の文字変換エラー対策
Iconv は変換不可能な文字があった場合にIllegalSequenceエラーを返してくれる。勝手に文字を無視されて知らない間に変なデータが登録されてしまうよりかは良いが、無視をしたい場合はある。たとえばユーザのメアド一覧をCSV出力したい、というときに名前に中国の漢字が含まれ...
2012/09/10 09:43
boolean 引数
boolean をそのまま引数に取るようなことはあまりしないようにしている。過去 ActiveRecord の save メソッドは validation をするかどうかを boolaen の引数で切り替えていた。 save(true) #=> validation あ...
2012/09/10 09:34
メソッド名の動詞
先のポストに続いての話で、私は複雑なモデルのprivateメソッドを作るにあたって、メソッド名には動詞を必ず記載することにしている。java はおそらくそういう慣習があり rubyはそうではないが、複雑なモデルにおいては動詞を省略することはしない(じゃないと後で混乱を招きやすい)...
2012/09/09 23:29
メソッド名をどこまで短くするか
ruby を書いていると簡潔なメソッド名や変数名を使うようになる。たとえば load_emails_by_user_id と書くべきところを単に emails とするなど。簡潔なメソッド名を使うのは読みやすくよいことのように思えるが、そうではないこともある。 短いメソッド名を...
2012/09/09 23:15
引数の並び順
メソッドの引数の並び順には少しだけ気を払うようにしている。この並び順が与える影響はおそらくそれほど大きなものではないし、何が正解かはかなり微妙な問題だから、あまり深く考えるわけではないが、少なくとも適当な並びにはしていない。 どのような順番にしているかというと、そのメソッドが...
2012/09/09 23:03
find_by_sql のうまい使い方(1)
rails3からARELが導入され、ActiveRecordのクエリインターフェースはとても洗練されたものになりました。 scopeを組み合わせることで複雑なクエリをとてもシンプルかつ自然な形で表現できるようになっています。実際のところ、ARELの表現力はよく現れるSQLのほと...
2012/09/05 00:38
1件〜100件
「ブログリーダー」を活用して、japaneseさんをフォローしませんか?