毎日SEの技術ブログ

平日は社内SE、休みは自宅でサービス開発するSEの技術ブログ

method_missingを使ってnilを無視する

tryメソッドを使ってnilを無視できますが、tryをそもそもしたくない。 object.try(:method).try(:method) とかやりたくないわけですよ。汚いから NilClassでmethod_missingをオーバーライドする class NilClass def method_missing(name, *args, &block) nil…

rails4.1 CHAPTCHAを使う

CHAPTCHAとは 入力フォームで機械的な投稿を防ぐために、画像の読みにくい文字を入力して認証させるやつ。 ↓こんなの simple_captchaが便利そう というかsimple_captchaしか見当たらない。 正しく動作させるまでに結構手こずった。手順通りやってもダメじゃ…

Ruby ファイルの種類からcontent-typeを取得する

拡張子からの判断ではなく、ファイルの内容で判別したい 具体的に言うと、jpegファイルを拡張子をpngにして保存したときも"image/jpeg"が取得したい ということ。 MIME::Typesを使うと拡張子から判断するため、上記の場合"image/png"が取得されてしまう。 ru…

【CSS3】フォントを細くする

CSS

最近のウェブサービスでよく見るようになりましたが、フォントを標準より若干細くする方法です。 ウェブフォントで元々細いフォントを表示させるとかではなく、ゴシックやメイリオ等既存フォントを細くします。 body{ -webkit-font-smoothing: antialiased; }

RSpec before(:all)とbefore(:each)の違い

はまったのでメモ。 大きな違いは実行順番ではない 自分もそうなんですが:allと:eachの違いは実行順番だけだと思っていましたが実際は違います。 例えば下記のようなテストの場合 describe Account do context '#signin' do context 'メールアドレスとパスワ…

Rails4.0でJasmineを使う

Jasmineとは RSpecライクなjavascript用のテストライブラリです。 javascriptでも当然単体テストが必要ですがどのようなテストがあるのか分からなかったため、調べてみたらjasmineというのが引っかかりました。 今回はそのjasmineを導入します。 bundle inst…

IEnumerable<T>にEachメソッドを生やす

List<T>にはForEachメソッドがあるんだけどIEnumerable<T>には無いから作った。 public void Each<T>(this IEnumerable<T> values, Action<T> action) { foreach(var v in values) action(v); } 使い方 var list = new[]{"1","2","3"}; list.Each(x=>Console.WriteLine(x));</t></t></t></t></t>…

Rails ActiveRecordのwhereで想定しないデータが取得される

はまったこと # id='2a2' model = model.where(relation_id: id) を実行するとrelation_idが2のデータが取得される。 実行されたSQL select model.* from model where model.relation_id = 2 原因はto_iメソッド relation_idはinteger型なので、idがstring型…

Rails flashの挙動

flashとは 主にユーザに通知などを行う際に利用する session機能を利用した機能 Hash形式 flashの使い方 controllerなどでflashに値を設定して、viewでflashから値を取得します。 #controller flash[:error] = "エラーが発生しました" #view <%= flash[:erro…

JJUG ナイトセミナー 6.11 ドメイン駆動設計特集!に参加しました

DDD

GREEで行われたドメイン駆動設計(以下DDD)のイベントに参加してきました。 エリック・エヴァンスのドメイン駆動設計を和訳した和智さんと、GREEに勤める加藤さんの二名がスピーカーです。 講演内容は下記二本立てです。 ・コードに語らせるために(和智さ…