$30 off During Our Annual Pro Sale. View Details »

Why Rails 5.1

Why Rails 5.1

MedBeer -Rails 5.1での開発について
https://medpeer.connpass.com/event/58805/

Kyuden Masahiro

June 28, 2017
Tweet

More Decks by Kyuden Masahiro

Other Decks in Programming

Transcript

  1. Why? Rails 5.1
    Kyuden Masahiro

    View Slide

  2. whoami

    Name: Kyuden Masahiro

    Github: kyuden

    Twitter: @kyuden_

    Gems:
    – sorcery: committer

    https://github.com/Sorcery/sorcery
    – banken : creator

    https://github.com/kyuden/banken

    View Slide

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

    View Slide

  4. View Slide

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

    View Slide

  6. form_with

    View Slide

  7. form_with

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

    View Slide

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

    View Slide

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

    View Slide

  10. Why?

    View Slide

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

    View Slide

  12. form_with

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

    View Slide

  13. Why?

    View Slide

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

    View Slide

  15. form_with

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

    View Slide

  16. Why?

    View Slide

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

    View Slide

  18. form_with

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

    View Slide

  19. Why?

    View Slide

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

    View Slide

  21. form_with

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

    View Slide

  22. Why?

    View Slide

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

    View Slide

  24. Encrypted
    secrets

    View Slide

  25. Encrypted secrets

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

    View Slide

  26. Encrypted secrets
    bin/rails secrets:setup

    View Slide

  27. Encrypted secrets
    EDITOR=vim bin/rails secrets:edit

    View Slide

  28. Encrypted secrets
    ● 暗号化 / 複合のための鍵は
    config/secrets.yml.key に定義する以外に
    環境変数 $RAILS_MASTER_KEY に設定す
    ることも可能

    Rails5.1 で新規に作られたアプリ以外はデフ
    ォルトでは Encrypted secrets を読み込む
    以下の設定が false になっているので注意
    config.read_encrypted_secrets = true
    ● 暗号化方式は aes-128-gcm

    View Slide

  29. Why?

    View Slide

  30. Encrypted secrets

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

    View Slide

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

    View Slide

  32. Keep Motivation

    View Slide

  33. Keep Motivation
    ⬇ そこそこ長く Rails( 特定のフレームワーク ) を
    使って詳しくなると Rails への興味が徐々に薄れ
    ていく ( 自分の場合は ) 。

    Rails の新バージョンがリリースされると、新し
    い機能や変更点は一応確認するが、 Rails の知識
    がついても自分の力になっている感じがしない
    ( 興味が薄れるとなおさらそう感じる ) 。

    View Slide

  34. Keep Motivation

    DHH などがたてた新しい機能や大きな変更点の案
    が記載された ISSUE やコメントでの議論を読んで
    その Why を知ると、いろいろな学びがある。
    ⬇ そこで得た学びは Rails に限らず、他のフレーム
    ワークを使う場合や、設計で悩んだ際にも応用でき
    る。

    Rails に慣れて取れ高が少なくなってきた方なんか
    は、 ISSUE やコメントでの議論の内容がよくわか
    ると思うので特に楽しめるかも?
    ○ モチベーションを保てる!

    View Slide

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

    View Slide

  36. 続きは
    WEB+DB PRESS
    で !

    View Slide