Read the release note of Rails 5.2

Read the release note of Rails 5.2

88cc995ce5954b15c12ea14904258757?s=128

Kento Nagata

March 28, 2018
Tweet

Transcript

  1. 2017.7.19 | ©2017 Wantedly, Inc. Read the release note of

    Rails 5.2 Rails 5.2ͷϦϦʔεϊʔτΛಡΜͰݟΔ 2018/03/28 @ngtk
  2. 2017.7.19 | ©2017 Wantedly, Inc. 2 ઌिRails 5.2 RC2Ͱ·ͨ͠ΑͶ ิ଍͢Δݴ༿

    Read the release note of Rails 5.2
  3. 2017.7.19 | ©2017 Wantedly, Inc. 3 ಉ࣌ʹRelease Note΋ͰͨΑ͏ͳͷͰ
 ΈͯΈΑ͏ͱࢥ͍·ͨ͠ Read

    the release note of Rails 5.2
  4. 2017.7.19 | ©2017 Wantedly, Inc. 4 - Major Features -

    Active Storage - Redis Cache Store - HTTP/2 Early Hints - Credentials - Content Security Policy
 
 - Changes on each modules - Action Pack - Action View - Action Mailer - Active Record - Active Model - Active Support - Active Job Release note contents
  5. 2017.7.19 | ©2017 Wantedly, Inc. 5 - Paperclip΍CarrierwaveͳͲͷ୅ସ͑ - Amazon

    S3, Google Cloud Storage, Microsoft Azure Blob StorageΛόοΫΤϯυͱͯ͠ରԠ - μΠϨΫτΞοϓϩʔυ΋ରԠ - ײ૝: ࠓ͔Βஔ͖׵͑ΔఔͷϝϦοτ͸ͳͦ͞͏ͱ͍͏ ҹ৅ Active Storage
  6. 2017.7.19 | ©2017 Wantedly, Inc. 6 - ࠓ·Ͱ͸Ωϟογϡػߏͱͯ͠ɺϝϞϦ΍ϩʔΧϧετ ϨʔδɺMemcachedΛඪ४Ͱఏڙ -

    redis-railsͱ͍͏gem͕͕͋ͬͨɺඪ४ͰରԠͨ͠ - hiredis(cͷ࣮૷)ʹ΋ରԠ - ײ૝: ඞཁͳ΋ͷ͕ͪΌΜͱऔΓࠐ·Εͨײ͋ͬͯྑ͍ Redis cache store
  7. 2017.7.19 | ©2017 Wantedly, Inc. 7 - H2 Push͸ɺ༧ΊඞཁͳαϒϦιʔεΛฦ͓ͯͨ͘͠Ί ͷ࢓૊Έ

    - Reverse Proxy͕͋ͬͯOrigin͕H2Λ࿩ͤͳ͍৔߹ɺ H2 Push͸࢖͑ͳ͍ - Early Hints͸ɺOrigin(H1.1)͕Reverse Proxy(H2)ʹα ϒϦιʔεΛ఻͑ΔͨΊͷ࢓༷ HTTP/2 Early Hints
  8. 2017.7.19 | ©2017 Wantedly, Inc. 8 - RailsͰ͸ྫ͑͹`javascript_include_tag`΍ `stylesheet_link_tag`ʹؚ·ΕͨϦιʔεΛ͕Μ͕Μ 103

    Early HintsͰฦ͍ͯ͘͠ - ࠓͷͱ͜ΖpumaͷΈରԠ - ײ૝: pumaΛ࢖͍ͬͯΕ͹ҙ֎ͱγϡοͱԸܙΛड͚Ε ͦ͏ʁ HTTP/2 Early Hints
  9. 2017.7.19 | ©2017 Wantedly, Inc. 9 - credentials.yml.encͰ҉߸Խ͞ΕͨΩʔΛ؅ཧ͢Δ - 5.1Ͱಋೖ͞ΕͨEncrypted

    secrets͸ɺͳ͔ͬͨ͜ͱʹ ͳΓͦ͏ - 伴͸RAILS_MASTER_KEYͰ؅ཧ Credentials
  10. 2017.7.19 | ©2017 Wantedly, Inc. 10 - ENVͰ੾Γସ͑Δͱ͔͸ߟ͑ΒΕ͍ͯͳ͍ - ͭ·Γɺdevelopmentͱstagingͱ͔ͷ͜ͱ͸ߟྀ͞Ε

    ͍ͯͳ͍Ά͍ - ͨͩ͠ɺࣗ෼ͰͦΕΒͷػߏΛ࡞Ε͹͍͚Δ͔΋ʁ - https://github.com/rails/rails/pull/ 30067#issuecomment-372760099 Credentials
  11. 2017.7.19 | ©2017 Wantedly, Inc. 11 - ײ૝ - ͳΜͰ͜͏ͳͬͨײ͕͍͢͝

    - ͋·Γඪ४ͷ࢓૊ΈʹཔΒͳ͍΄͏͕ྑͦ͞͏ - ͜ͷล͸ଞͷϓϩδΣΫτͰͲ͏΍͍ͬͯΔͷ͔͕ؾ ʹͳΔ Credentials
  12. 2017.7.19 | ©2017 Wantedly, Inc. 12 - XSS΍ύέοτ౪ௌͳͲͷ߈ܸΛ๷͙ͨΊͷηΩϡϦ ςΟϨΠϠʔ -

    ίϯςϯπ͕औಘՄೳͳυϝΠϯΛઃఆ͢Δ͜ͱͰҙਤ ͠ͳ͍ίϯςϯπͷऔಘ΍࣮ߦΛ๷͙ - secureheadersͱ͍͏Gem͕͕͋ͬͨɺඪ४ͰରԠ Content Security Policy (CSP)
  13. 2017.7.19 | ©2017 Wantedly, Inc. 13 - InitializerͰઃఆΛॻ͖·͢ - ίϯτϩʔϥʔ͝ͱʹ΋ઃఆΛఆٛ͢Δ͜ͱ͕Ͱ͖·͢

    Content Security Policy (CSP)
  14. 2017.7.19 | ©2017 Wantedly, Inc. 14 - ײ૝ - ͪΌΜͱ׆༻͍ͨ͠

    - ಋೖ͸ɺϩΪϯάΛͯ͠໰୊ΛݟΔ͚ΔϑΣʔζ͕͋ Δ͸ͣͳͷͰɺͦͷ΁Μͷϊ΢ϋ΢΍ӡ༻ʹ͍ͭͯڞ ༗͍ͨ͠ Content Security Policy (CSP)
  15. 2017.7.19 | ©2017 Wantedly, Inc. 15 - Bootsnap͸։ൃ؀ڥͰͷRailsىಈ࣌ؒΛૣ͘͢ΔGem - σϑΥϧτͰGemfileʹ௥Ճ͞ΕΔΑ͏ʹͳͬͨ

    Railties / Bootsnap
  16. 2017.7.19 | ©2017 Wantedly, Inc. 16 - Bootsnap͸ҎԼͷํ๏Ͱૣ͍ͯ͘͠Δ - require΍loadͷ݁ՌΛΩϟογϡ

    - RubyVM::InstructionSequeΛ࢖ͬͯrubyͷίʔυΛόΠφϦ σʔλԽͯ͠Ωϟογϡ - YAMLϑΝΠϧΛMessagePack(·ͨ͸Marshal)ͷܗࣜͰΩϟο γϡ Railties / Bootsnap
  17. 2017.7.19 | ©2017 Wantedly, Inc. 17 - ײ૝ - WantedlyͰ΋ࡢ೥ಋೖͯ͠70%ىಈ͕ૣ͘

    ͳͬͨͷͰ͓͢͢Ί Railties / Bootsnap
  18. 2017.7.19 | ©2017 Wantedly, Inc. 18 - database.ymlͰYamlͷܧঝΛ࢖Θͣʹ஋Λڞ༗ Ͱ͖ΔsharedηΫγϣϯΛ௥Ճ #28896

    - .ruby-version΍GemfileͰͷόʔδϣϯࢦఆͳ Ͳ͕σϑΥϧτͰߦΘΕΔΑ͏ʹͳͬͨɻ #30016 Railties / Others
  19. 2017.7.19 | ©2017 Wantedly, Inc. 19 - database.ymlͰYamlͷܧঝΛ࢖Θͣʹ஋Λڞ༗ Ͱ͖ΔsharedηΫγϣϯΛ௥Ճ #28896

    - .ruby-version΍GemfileͰͷόʔδϣϯࢦఆͳ Ͳ͕σϑΥϧτͰߦΘΕΔΑ͏ʹͳͬͨɻ #30016 Railties / Others
  20. 2017.7.19 | ©2017 Wantedly, Inc. 20 - ΩϟογϡΩʔʹόʔδϣϯΛؚΊΔͷͰ͸ͳ ͘ɺΦϒδΣΫτΛ໊ࣔ͢લ͚ͩͱͯ͠ɺෆ༻ ҙʹແବͳΩϟογϡΛੜ੒͢Δ͜ͱΛ๷͙Α

    ͏ʹͳͬͨ Action Pack / Recyclable cache keys
  21. 2017.7.19 | ©2017 Wantedly, Inc. 21 - ͨͱ͑͹ɺ`projects/1-20170202145500`ΛΩʔʹ͢ΔͷͰ͸ͳ ͘ɺΩʔΛΦϒδΣΫτ໊ͷ`projects/1`ͱͯ͠όʔδϣϯ `20170202145500`Λσʔλதʹอ࣋͢Δ

    - HTTPͷΩϟογϡͰͷɺURLͱETAGͱಉ͡Α͏ͳ΍Γํ Action Pack / Recyclable cache keys
  22. 2017.7.19 | ©2017 Wantedly, Inc. 22 - ׂѪ Action View

  23. 2017.7.19 | ©2017 Wantedly, Inc. 23 - ActiveJobͷ೚ҙΫϥε͕ࢦఆͰ͖ΔΑ͏ʹͳͬͨ #29457 -

    ActionMailer͸͢΂ͯActionMailer::DeliveryJobΛར༻͍ͯ͠Δ - ΤϥʔϋϯυϦϯάͳͲ೚ҙͷରԠ͍ͨ͠έʔεͰ׆༻Ͱ͖ͦ͏ Action Mailer
  24. 2017.7.19 | ©2017 Wantedly, Inc. 24 - [MySQL] descending indexΛαϙʔτ

    - Fixtureͷ౤ೖ࣌ʹͰBluk insert͢ΔΑ͏ʹͳͬͨ - ΫΤϦ͕ൃߦ͞ΕͨίʔυΛϩάͰग़ྗͰ͖ΔΑ͏ʹͳͬͨ Active Record 3VCZHFN-PBE NT 4&-&$5SVCZHFNT '30.SVCZHFNT8)& ↳BQQWJFXTOFXT@WFSTJPOIUNMFSCJO
  25. 2017.7.19 | ©2017 Wantedly, Inc. 25 * ྫ֎`StatementTimeout`ͱ`LockWaitTimeout`ͱ`QueryCanceled` ͷ௥Ճ *

    `StatementTimeout`: λΠϜΞ΢τɺMySQLͱPostgresʹରԠ * `LockWaitTimeout`: ϩοΫͷλΠϜΞ΢τ * `QueryCanceled`: MySQLͷΈରԠɻPostgres͸ `StatementTimeout`ʹ·ͱΊΒΕΔ Active Record
  26. 2017.7.19 | ©2017 Wantedly, Inc. 26 * destroyͨ͠ޙͷsaveͰ஋ΛมߋͰ͖ͳ͍Α͏ʹͳͬͨ * [Postgres]

    ֎෦ςʔϒϧͷαϙʔτ Active Record
  27. 2017.7.19 | ©2017 Wantedly, Inc. 27 • ׂѪ Active Model

  28. 2017.7.19 | ©2017 Wantedly, Inc. 28 • ׂѪ Active Support

  29. 2017.7.19 | ©2017 Wantedly, Inc. 29 • ׂѪ Active Job

  30. 2017.7.19 | ©2017 Wantedly, Inc. 30 • Redis cache store΍Early

    hintsͳͲ͸͙͢ʹ׆༻Ͱ͖ͦ͏ • CSP͸ಋೖ͕࣌େมͦ͏͕ͩɺʮඪ४ͰରԠͰ͖Δରࡦʯ͕૿͑ͨ ͷ͸ͱͯ΋ྑ͍ • Ωϟογϡͷόʔδϣχϯά΋׆༻Ͱ͖ͦ͏ • BootsnapͰͷߴ଎Խ΍ActiveRecordͰͷ৽ػೳ͸೔ৗͰ׆༻Ͱ͖ ͦ͏ͳ΋ͷ͕ଟ͍ ·ͱΊ