Open9

【読書メモ】Ruby コードレシピ集

ゆうやゆうや

なるほど、こういうケースで便利だ

レシーバーを返却しないメソッドにレシーバーを返却させたい

tap未使用

customer_model = CustomerModel.new(params)
customer_model.save # saveの返り値はtrue/false
customer_model.id

tap使用

CustomerModel.new(params).tap(&:save).id

https://qiita.com/strings/items/3b85d161f370a222a1e3

ゆうやゆうや

Object#then

これも便利ね。似たケースでBeforeみたいな書き方したことあったな、今後はthen使ってスマートに書こう

Before

str = 'https://api.example.com'
url = URI.parse(str)
res = Net::HTTP.get(url)
json = JSON.parse(res)
puts json['description']

After

puts 'https://api.example.com'
  .then { |str| URI.parse(str) }
  .then { |url| Net::HTTP.get(url) }
  .then { |res| JSON.parse(res) }
  .then { |json| json['description'] }

https://docs.ruby-lang.org/ja/latest/method/Object/i/then.html