毎日SEの技術ブログ

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

Ruby

method_missingを使ってnilを無視する

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

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

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

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…

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…