jbuilderについて
extract! # activerecord objectのアトリビュートを指定して書き出し ignore_nil! # このメソッドを書いた後は, nil のkey-valueをjsonに書き出さない. ignore_nil! false でオフにできる.
Splat演算子
a, b = *[1,2] # => a = 1, b = 2 *c = 1,2,3 # => c = [1,2,3]
Rubyで、配列を展開するときに使う *array
みたいな演算子 *
を Splat演算子と呼ぶ.
上の動作は知っていたけど、下の動作は気づいていなかった.
展開後の値を代入で指定しているわけですね.
メソッドの引数にハッシュを指定するときのつまづきポイント
[42] pry(main)> fuga a: 123 => {:a=>123} [43] pry(main)> fuga {a: 123} SyntaxError: unexpected ':', expecting '}' fuga {a: 123} [43] pry(main)> fuga( {a: 123}) => {:a=>123}
メソッドの引数にハッシュを指定したいときに, fuga {a: 123}
と書くとエラーになる。
これは、Rubyが引数の {
をブロック引数の {
として解釈してしまうため発生する。
fuga({a: 123})
と()
明示的に引数指定をすればエラーにならない
はじめ、Splat演算子と関係あるのかなと思ったけど、関係なかった。
今回、仕事で久しぶりに遭遇して、同僚のA氏に昔教えていただいたことを思い出した。
テスト周りで久しぶりにハマった
BaseController の rescue_from で例外の出力処理を書いていなかったため
テストは落ちるけど、スタックトレースが出力されず、原因の特定に困った。
いわゆる例外の握りつぶしに意図せずになってしまっていた。
これから rescue_from
で StandardError
を補足する場合は注意したい。