猫の魔法

主にruby系の技術メモを記載

2017-03-01から1ヶ月間の記事一覧

is_a?についてのメモ

Highlineのソースを読んでいたら以下の部分でちょっと考えてしまった。 if template_or_question.is_a? Question template_or_question else Question.new(template_or_question, answer_type, &details) end 悩んだのはtemplate_or_question.is_a? Question…

deviseのメールアドレスバリデーション

最近deviseを使う事があったのだが、メールアドレスのバリデーションがどうなっているのか気になっったので調べてみた。 devise/devise_test.rb at master · plataformatec/devise · GitHub メールアドレスのバリデーションテストは上記で行っている。 で、…

has_many throughの苦悩

railsのhas_many throughの使い方が分からなかったという話。 モデルの関連付けでhas_manyは分かりやすい。1対多のモデルは1側にhas_manyをつければいい。 問題はhas_many throughでこれが良く分からない。多対多の時につけるというが多対多の場合、リレーシ…

個人的メモ:Rails AntiPatterns(21):最後

CHAPTER10 Building for Failure 発生した障害は素早く復旧される事と、黙って失敗しない事が大事 AntiPattern: Continual Catastrophe 前段の処理が失敗しているのにも関わらず、それをキャッチ出来ずに後続処理が動いてしまうのはよくない。 Solution: Fai…

個人的メモ:Rails AntiPatterns(20)

AntiPattern: Wet Validations DBによってはvalidationで指定された制約をサポートしていない場合がある。その場合、DB上で発生する不整合データを検知出来ない可能性がある。 Solution: Eschew Constraints in the Database ★適切なgemを使うことで上記を回…

個人的メモ:Rails AntiPatterns(19)

Solution: Never Use External Code in a Migration migrationをする際にDB上のデータを一緒に変更する事はよくある事だが、upメソッド内にrubyでその手順を直接書くべきではない 理由はパフォーマンスと、DBから見た外部依存性がrails側にできてしまう為で…

個人的メモ:Rails AntiPatterns(18)

Chapter 9 Databases railsはORMマッパーによって、DBの事を意識せずに済むように設計されているが、それでも気にしなければいけない点はある AntiPattern: Messy Migrations railsはmigrationによってDBへ直接変更を加えなくてもよくなっているが、時間が立…

個人的メモ:Rails AntiPatterns(17)

Solution: Move Processing into Background Jobs 処理時間がwebでの応答に不適切なくらい掛かる場合はcronやキューイングといった。バックグラウンドJobの仕組みを検討した方がいい cronの場合スクリプトを別に作ってそれを動かす。 例えば、テーブルのカウ…

個人的メモ:Rails AntiPatterns(16)

忙し過ぎて時間が空いてしまった。 CHAPTER 8 Scaling and Deploying AntiPattern: Painful Performance 単純なパフォーマンスの問題を防ぐ為の事例を紹介する。 Solution: Don’t Do in Ruby What You Can Do in SQL RubyでSQLで出来る事をやらせないように…