グロースエンジニアのブログ

Ruby on Rails エンジニアです!開発に当たって勉強したことをまとめていこうと思います!

第56回 Ginza.rbに行ってきた!

ここ数ヶ月続けて Ginza.rb に参加しています。

自分とのレベルが違いすぎて圧倒されることが多いんですが、このままだと本当にただ参加しているだけになってしまうので、振り返りもかねて学んだことを記録して行こうと思います。

今回のテーマ

【第56回 もうすぐやってくる!Rails5.2の細かいところも見ておこう 】ということで、資料はこちら!(公開してもいいということだったので大丈夫なはず!)

Rails 5.2

内容については上記資料を見た方がいいです。

各ページの青いところはリンクになっていて関連するPRなどに飛べるので分かりやすいと思います。(さすが、あの方の資料!)

以下、自分用のメモ。
知らなかった機能などはざっとどんな機能か調べてリンクを貼ってます。

(間違いなどあればご指摘いただけるとうれしいです!)

Action Cable

- hostとかportとかを設定できるようになった

使ったことないけど、今後機会があれば思い出せるようにメモ。

Action Mailer

- Mailer ごとに delivery job を設定できる

`delivery_later` したときに呼ばれるjobを自由に設定できるってことかな?

rails/message_delivery_test.rb at 2b35826389005bdb0af85a4ebb1f0ec213174d13 · rails/rails · GitHub


- email preview にlocaleが選べるようになった

preview 機能自体を知らなかった...。

ActionMailer Preview のススメ - Qiita

RailsのAction Mailer Previewsについて | 日々雑記

Action Pack

- cache key と cache version(updated_at)を分けて管理し、 cache keyを再利用可能に

Rails の version up のときに、load default にするとあれするので気を付けてね!とのこと。

ローカルで試すには設定が必要っぽい。

キャッシュは、デフォルトではproduction環境でのみ有効になります。ローカルでキャッシュを使ってみたい場合は、対応するconfig/environments/*.rbファイルでconfig.action_controller.perform_cachingtrueに設定します。

Rails のキャッシュ: 概要 | Rails ガイド

- eager_load = true の場合、サーバー起動時に各コントローラーのactionを読み込むようになった

- encrypted cookies に AES-256-GCM を使用

より堅牢なものになった
Rails側で良いようにしてくれる(自動で書き換える)
勝手に古いcookies を新しいものに書き換える

- protect_from_forgery がデフォルトになった

- signed/encrypted cookiesに有効期限を知っていできる

- key の rotation ができるようになった

# ここで新しいものを指定
Rails.application.config.action_dispatch.signed_cookie_digest = "SHA256"

# ここで古いのを指定
Rails.application.config.action_dispatch.cookies_rotations.tap do |cookies|
  cookies.rotate :signed, digest: "SHA1"
end

- System test に headless chrome driver, headless firefox driver が入った

- デフォルトの mime type が追加された

- header が変わった
以下の3つが追加された


  "X-Download-Options" => "noopen",
  "X-Permitted-Cross-Domain-Policies" => "none",
  "Referrer-Policy" => "strict-origin-when-cross-origin"

Action View

- srcset を指定できるようになった

- 画像の alt の自動生成を削除

- form_with に id 属性を追加するようになった
capybara のテストなどで必要ということで追加された 

Active Job

jobを実行する際にオブジェクトをシリアライズ、デシリアライズしてる。
それを自分で定義できるようになった

Active Model

- length validatorにProc, Symbolが渡せるようになった
これにより、条件を指定して最大文字数とかを調整できるようになった

- Active Record にあった attributes API が Active Model 配下に移動
Active Record のものを使うのは問題ない
Active Model のものは public ではない

(Rails で public api ってのは docs にあるかどうか)

Active Record

- Descending Indexが指定できるようになった(MySQL 8.0.1以降)

- sqlite3 で boolean を t/f から 1/0 に修正
t/f で保存していた場合、手動で変更する必要がある

- order と pluck に生 SQL はダメ
Arel.sqlメソッドでラップしないとだめ

- fixtures でまとめてクエリーを実行するようになった

- SQLが発行された場所が log に出るようになった
デフォルトは開発環境のみ

- MySQL の bulk true があったけど、 PostgreSQL でもできるようになった

- PostgreSQL の foreign tables をサポート

- Errorクラスが増えてる

https://y-yagi.github.io/presen_rails_5_2_part2/#/47

- その他、 Active Record はこれを見ると良い
http://kamipo.github.io/talks/20180215-tdtech/#/title

Atcive Support

- Date#prev_occurring、Date#next_occurringメソッドが追加された
前の曜日、次の曜日を取得するメソッド

- ActiveSupport::Cache::Store に write_multi メソッドを追加
Redis adapterだとMSETを使うようになるので、一個一個書き込むよりはやい

- ActiveSupport::Testing::TimeHelpersをincludeしている場合、テストの後処理で自動でtravel_backが呼ばれるようになった
Rspec はどうするのかわからない

Railties

- rails new 時の Gemfile に bootsnap を追加

--skip-bootsnap でスキップできる

その後の飲み会

今回は知った人が多かったので飲み会にも参加!

自分の開発経験にはない話がいっぱい出てきて、とても勉強になった。前に一回参加したときも感じたけど、こういう中での話にも知らないことがいっぱい出てくるので聞いてるだけで楽しい!

また参加します!