Slide 1

Slide 1 text

Why? Rails 5.1 Kyuden Masahiro

Slide 2

Slide 2 text

whoami ● Name: Kyuden Masahiro ● Github: kyuden ● Twitter: @kyuden_ ● Gems: – sorcery: committer ● https://github.com/Sorcery/sorcery – banken : creator ● https://github.com/kyuden/banken

Slide 3

Slide 3 text

5 分で Web サービスを 30 ヶ国語対応

Slide 4

Slide 4 text

No content

Slide 5

Slide 5 text

Rails 5.1 の新機能 / 変更点を一部紹介しますが、最後に脱線します

Slide 6

Slide 6 text

form_with

Slide 7

Slide 7 text

form_with ● form_for と form_tag が form_with に統 合された – 統合だけでなく、いくつか改善も行われており form_for や form_tag と少しデフォルトの挙動 が違うので注意が必要 – form_for と form_tag は今後 deprecate にな る予定

Slide 8

Slide 8 text

form_with `model:` を使うと form_for のようなモデ ルに基づいたフォームが生成できる

Slide 9

Slide 9 text

form_with `url:` を使うと form_tag のようなモデルに 基づかないフォームを生成できる

Slide 10

Slide 10 text

Why?

Slide 11

Slide 11 text

form_with https://github.com/rails/rails/issues/25197

Slide 12

Slide 12 text

form_with ● form_with はデフォルト `remote: true` ● 次の設定を false に設定することでデフォルトを local: true に変更できる config.action_view.form_with_generates_remote_ forms = false

Slide 13

Slide 13 text

Why?

Slide 14

Slide 14 text

form_with https://github.com/rails/rails/issues/25197

Slide 15

Slide 15 text

form_with ● form_with はデフォルトで form タグや Input タグに class 属性や id 属性を付与しない

Slide 16

Slide 16 text

Why?

Slide 17

Slide 17 text

form_with https://github.com/rails/rails/issues/25197

Slide 18

Slide 18 text

form_with ● form_with で form タグに class 属性や id 属 性などの HTML 属性を付与する際 `html{}` で ラップする必要はない

Slide 19

Slide 19 text

Why?

Slide 20

Slide 20 text

form_with https://github.com/rails/rails/issues/25197

Slide 21

Slide 21 text

form_with ● form_with はモデルの属性に存在しないフィー ルドを FormBuilder オブジェクト経由で指定で きる

Slide 22

Slide 22 text

Why?

Slide 23

Slide 23 text

form_with https://github.com/rails/rails/issues/25197

Slide 24

Slide 24 text

Encrypted secrets

Slide 25

Slide 25 text

Encrypted secrets ● config/secrets.yml とは別に秘匿情報を管 理する仕組み ● 暗号化して管理できることが特徴

Slide 26

Slide 26 text

Encrypted secrets bin/rails secrets:setup

Slide 27

Slide 27 text

Encrypted secrets EDITOR=vim bin/rails secrets:edit

Slide 28

Slide 28 text

Encrypted secrets ● 暗号化 / 複合のための鍵は config/secrets.yml.key に定義する以外に 環境変数 $RAILS_MASTER_KEY に設定す ることも可能 ● Rails5.1 で新規に作られたアプリ以外はデフ ォルトでは Encrypted secrets を読み込む 以下の設定が false になっているので注意 config.read_encrypted_secrets = true ● 暗号化方式は aes-128-gcm

Slide 29

Slide 29 text

Why?

Slide 30

Slide 30 text

Encrypted secrets ● config/secrets.yml に秘匿情報をベタ書きす るとセキュリティ的にバージョン管理できない ⬇ 秘匿情報ごとに環境変数を用意し実際の値は外部の リポジトリやサービスで管理するなどして運用 ⬇ しかし、アプリケーションコードと秘匿情報の管理 場所が異なると、どの時点のアプリケーションコー ドがどのような秘匿情報を必要とするのか把握する のが難しい ( 工夫が必要 ) ⬇ そう考えると、アプリケーションコードと共にバー ジョン管理できた方がいい ⬇ バージョン管理するためには暗号化が必要 ○ そこで Encrypted secrets

Slide 31

Slide 31 text

Encrypted secrets ● なぜ config/secrets.yml は 5.1 でも残っているのか ● なぜフォーマットは YAML なのか、 etc https://github.com/rails/rails/issues/25095

Slide 32

Slide 32 text

Keep Motivation

Slide 33

Slide 33 text

Keep Motivation ⬇ そこそこ長く Rails( 特定のフレームワーク ) を 使って詳しくなると Rails への興味が徐々に薄れ ていく ( 自分の場合は ) 。 ⬇ Rails の新バージョンがリリースされると、新し い機能や変更点は一応確認するが、 Rails の知識 がついても自分の力になっている感じがしない ( 興味が薄れるとなおさらそう感じる ) 。

Slide 34

Slide 34 text

Keep Motivation ⬇ DHH などがたてた新しい機能や大きな変更点の案 が記載された ISSUE やコメントでの議論を読んで その Why を知ると、いろいろな学びがある。 ⬇ そこで得た学びは Rails に限らず、他のフレーム ワークを使う場合や、設計で悩んだ際にも応用でき る。 ⬇ Rails に慣れて取れ高が少なくなってきた方なんか は、 ISSUE やコメントでの議論の内容がよくわか ると思うので特に楽しめるかも? ○ モチベーションを保てる!

Slide 35

Slide 35 text

Rails 5.1 の新機能 / 変更点 全然紹介できてない ..

Slide 36

Slide 36 text

続きは WEB+DB PRESS で !